Class generation
Creating XML description of highlighting rules is the most complicated
part of the process. To generate the class, you need just few lines of
code:
<?php
require_once 'Text/Highlighter/Generator.php';
$generator->generate();
$generator->saveCode('PHP.php');
?>
Look at what we get: this new class just initilizes the parent class
with options, all the job is done by the base class.
<?php
/**
* Auto-generated class. PHP syntax highlighting
*
* @package Text_Highlighter
* @author Andrey Demenev <demenev@on-line.jar.ru>
*
*/
/**
* @ignore
*/
require_once 'Text/Highlighter.php';
/**
* Auto-generated class. PHP syntax highlighting
*
* @author Andrey Demenev <demenev@on-line.jar.ru>
* @package Text_Highlighter
*/
{ /**
* PHP4 Compatible Constructor
*
* @param array $options
* @access public
*/
{
}
/**
* Constructor
*
* @param array $options
* @access public
*/
{
'regions' =>
array (
'phpTags' =>
array (
'name' => 'phpTags',
'case' => false,
'innerClass' => 'code',
'delimClass' => 'inlinetags',
'start' => '/\\<\\?(php|=)?/i',
'end' => '/\\?\\>/i',
'remember' => false,
'lookfor' =>
array (
'regions' =>
array (
0 => 'strSingle',
1 => 'strDouble',
2 => 'block',
3 => 'brackets',
4 => 'sqbrackets',
5 => 'mlcomment',
),
'blocks' =>
array (
0 => 'var',
1 => 'identifier',
2 => 'comment',
),
),
),
'strSingle' =>
array (
'name' => 'strSingle',
'case' => false,
'innerClass' => 'string',
'delimClass' => 'quotes',
'start' => '/\'/i',
'end' => '/\'/i',
'remember' => false,
'lookfor' =>
array (
'blocks' =>
array (
0 => 'escaped',
),
),
),
'strDouble' =>
array (
'name' => 'strDouble',
'case' => false,
'innerClass' => 'string',
'delimClass' => 'quotes',
'start' => '/"/i',
'end' => '/"/i',
'remember' => false,
'lookfor' =>
array (
'blocks' =>
array (
0 => 'var',
1 => 'escaped',
),
),
),
'block' =>
array (
'name' => 'block',
'case' => false,
'innerClass' => 'code',
'delimClass' => 'brackets',
'start' => '/\\{/i',
'end' => '/\\}/i',
'remember' => false,
'lookfor' =>
array (
'regions' =>
array (
0 => 'strSingle',
1 => 'strDouble',
2 => 'block',
3 => 'brackets',
4 => 'sqbrackets',
5 => 'mlcomment',
6 => 'codeEscape',
),
'blocks' =>
array (
0 => 'var',
1 => 'identifier',
2 => 'comment',
),
),
),
'brackets' =>
array (
'name' => 'brackets',
'case' => false,
'innerClass' => 'code',
'delimClass' => 'brackets',
'start' => '/\\(/i',
'end' => '/\\)/i',
'remember' => false,
'lookfor' =>
array (
'regions' =>
array (
0 => 'strSingle',
1 => 'strDouble',
2 => 'block',
3 => 'brackets',
4 => 'sqbrackets',
5 => 'mlcomment',
),
'blocks' =>
array (
0 => 'var',
1 => 'identifier',
2 => 'comment',
),
),
),
'sqbrackets' =>
array (
'name' => 'sqbrackets',
'case' => false,
'innerClass' => 'code',
'delimClass' => 'brackets',
'start' => '/\\[/i',
'end' => '/\\]/i',
'remember' => false,
'lookfor' =>
array (
'regions' =>
array (
0 => 'strSingle',
1 => 'strDouble',
2 => 'block',
3 => 'brackets',
4 => 'sqbrackets',
5 => 'mlcomment',
),
'blocks' =>
array (
0 => 'var',
1 => 'identifier',
2 => 'comment',
),
),
),
'mlcomment' =>
array (
'name' => 'mlcomment',
'case' => false,
'innerClass' => 'comment',
'delimClass' => 'comment',
'start' => '/\\/\\*/i',
'end' => '/\\*\\//i',
'remember' => false,
),
'codeEscape' =>
array (
'name' => 'codeEscape',
'case' => false,
'innerClass' => 'default',
'delimClass' => 'inlinetags',
'start' => '/\\?\\>/i',
'end' => '/\\<\\?(php|=)?/i',
'remember' => false,
),
),
'keywords' =>
array (
'reserved' =>
array (
'name' => 'reserved',
'line' => 46,
'innerClass' => 'reserved',
'case' => false,
'inherits' => 'identifier',
'match' =>
array (
'echo' => true,
'foreach' => true,
'else' => true,
'if' => true,
'elseif' => true,
'for' => true,
'as' => true,
'while' => true,
'break' => true,
'continue' => true,
'class' => true,
'switch' => true,
'case' => true,
'array' => true,
'default' => true,
'do' => true,
'exit' => true,
'function' => true,
'global' => true,
'include' => true,
'include_once' => true,
'require' => true,
'require_once' => true,
'isset' => true,
'empty' => true,
'list' => true,
'new' => true,
'static' => true,
'var' => true,
'return' => true,
'null' => true,
'true' => true,
'false' => true,
),
),
),
'blocks' =>
array (
'var' =>
array (
'name' => 'var',
'case' => false,
'innerClass' => 'var',
'match' => '/\\$[a-z_]\\w*/i',
'multiline' => false,
),
'escaped' =>
array (
'name' => 'escaped',
'case' => false,
'innerClass' => 'string',
'match' => '/\\\\\\\\|\\\\"|\\\\\'|\\\\\\$/i',
'multiline' => false,
),
'identifier' =>
array (
'name' => 'identifier',
'case' => false,
'innerClass' => 'identifier',
'match' => '/[a-z_]\\w*/i',
'multiline' => false,
),
'comment' =>
array (
'name' => 'comment',
'case' => false,
'innerClass' => 'comment',
'match' => '/(#|\\/\\/).+/i',
'multiline' => false,
),
),
'toplevel' =>
array (
'regions' =>
array (
0 => 'phpTags',
),
),
'case' => false,
'defClass' => 'default',
);
}
}
?>