Text_Highlighter
[ class tree: Text_Highlighter ] [ index: Text_Highlighter ] [ all elements ]
Prev Next

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:

  1. <?php
  2.   require_once 'Text/Highlighter/Generator.php';
  3.   $generator =new Text_Highlighter_Generator('php.xml');
  4.   $generator->generate();
  5.   $generator->saveCode('PHP.php');
  6. ?>
Look at what we get: this new class just initilizes the parent class with options, all the job is done by the base class.
  1. <?php
  2. /**
  3.  * Auto-generated class. PHP syntax highlighting
  4.  *
  5.  * @package Text_Highlighter
  6.  * @author Andrey Demenev <demenev@on-line.jar.ru>
  7.  *
  8.  */
  9.  
  10. /**
  11.  * @ignore
  12.  */
  13.  
  14. require_once 'Text/Highlighter.php';
  15.  
  16. /**
  17.  * Auto-generated class. PHP syntax highlighting
  18.  *
  19.  * @author Andrey Demenev <demenev@on-line.jar.ru>
  20.  * @package Text_Highlighter
  21.  */
  22. {    /**
  23.      * PHP4 Compatible Constructor
  24.      *
  25.      * @param array  $options 
  26.      * @access public
  27.      */
  28.     function Text_Highlighter_PHP($options=array())
  29.     {
  30.         $this->__construct($options);
  31.     }
  32.  
  33.  
  34.     /**
  35.      *  Constructor
  36.      *
  37.      * @param array  $options 
  38.      * @access public
  39.      */
  40.     function __construct($options=array())
  41.     {
  42.         $this->_syntax = array (
  43.             'regions' => 
  44.             array (
  45.                 'phpTags' => 
  46.                 array (
  47.                     'name' => 'phpTags',
  48.                     'case' => false,
  49.                     'innerClass' => 'code',
  50.                     'delimClass' => 'inlinetags',
  51.                     'start' => '/\\<\\?(php|=)?/i',
  52.                     'end' => '/\\?\\>/i',
  53.                     'remember' => false,
  54.                     'lookfor' => 
  55.                     array (
  56.                         'regions' => 
  57.                         array (
  58.                             0 => 'strSingle',
  59.                             1 => 'strDouble',
  60.                             2 => 'block',
  61.                             3 => 'brackets',
  62.                             4 => 'sqbrackets',
  63.                             5 => 'mlcomment',
  64.                         ),
  65.                         'blocks' => 
  66.                         array (
  67.                             0 => 'var',
  68.                             1 => 'identifier',
  69.                             2 => 'comment',
  70.                         ),
  71.                     ),
  72.                 ),
  73.                 'strSingle' => 
  74.                 array (
  75.                     'name' => 'strSingle',
  76.                     'case' => false,
  77.                     'innerClass' => 'string',
  78.                     'delimClass' => 'quotes',
  79.                     'start' => '/\'/i',
  80.                     'end' => '/\'/i',
  81.                     'remember' => false,
  82.                     'lookfor' => 
  83.                     array (
  84.                         'blocks' => 
  85.                         array (
  86.                             0 => 'escaped',
  87.                         ),
  88.                     ),
  89.                 ),
  90.                 'strDouble' => 
  91.                 array (
  92.                     'name' => 'strDouble',
  93.                     'case' => false,
  94.                     'innerClass' => 'string',
  95.                     'delimClass' => 'quotes',
  96.                     'start' => '/"/i',
  97.                     'end' => '/"/i',
  98.                     'remember' => false,
  99.                     'lookfor' => 
  100.                     array (
  101.                         'blocks' => 
  102.                         array (
  103.                             0 => 'var',
  104.                             1 => 'escaped',
  105.                         ),
  106.                     ),
  107.                 ),
  108.                 'block' => 
  109.                 array (
  110.                     'name' => 'block',
  111.                     'case' => false,
  112.                     'innerClass' => 'code',
  113.                     'delimClass' => 'brackets',
  114.                     'start' => '/\\{/i',
  115.                     'end' => '/\\}/i',
  116.                     'remember' => false,
  117.                     'lookfor' => 
  118.                     array (
  119.                         'regions' => 
  120.                         array (
  121.                             0 => 'strSingle',
  122.                             1 => 'strDouble',
  123.                             2 => 'block',
  124.                             3 => 'brackets',
  125.                             4 => 'sqbrackets',
  126.                             5 => 'mlcomment',
  127.                             6 => 'codeEscape',
  128.                         ),
  129.                         'blocks' => 
  130.                         array (
  131.                             0 => 'var',
  132.                             1 => 'identifier',
  133.                             2 => 'comment',
  134.                         ),
  135.                     ),
  136.                 ),
  137.                 'brackets' => 
  138.                 array (
  139.                     'name' => 'brackets',
  140.                     'case' => false,
  141.                     'innerClass' => 'code',
  142.                     'delimClass' => 'brackets',
  143.                     'start' => '/\\(/i',
  144.                     'end' => '/\\)/i',
  145.                     'remember' => false,
  146.                     'lookfor' => 
  147.                     array (
  148.                         'regions' => 
  149.                         array (
  150.                             0 => 'strSingle',
  151.                             1 => 'strDouble',
  152.                             2 => 'block',
  153.                             3 => 'brackets',
  154.                             4 => 'sqbrackets',
  155.                             5 => 'mlcomment',
  156.                         ),
  157.                         'blocks' => 
  158.                         array (
  159.                             0 => 'var',
  160.                             1 => 'identifier',
  161.                             2 => 'comment',
  162.                         ),
  163.                     ),
  164.                 ),
  165.                 'sqbrackets' => 
  166.                 array (
  167.                     'name' => 'sqbrackets',
  168.                     'case' => false,
  169.                     'innerClass' => 'code',
  170.                     'delimClass' => 'brackets',
  171.                     'start' => '/\\[/i',
  172.                     'end' => '/\\]/i',
  173.                     'remember' => false,
  174.                     'lookfor' => 
  175.                     array (
  176.                         'regions' => 
  177.                         array (
  178.                             0 => 'strSingle',
  179.                             1 => 'strDouble',
  180.                             2 => 'block',
  181.                             3 => 'brackets',
  182.                             4 => 'sqbrackets',
  183.                             5 => 'mlcomment',
  184.                         ),
  185.                         'blocks' => 
  186.                         array (
  187.                             0 => 'var',
  188.                             1 => 'identifier',
  189.                             2 => 'comment',
  190.                         ),
  191.                     ),
  192.                 ),
  193.                 'mlcomment' => 
  194.                 array (
  195.                     'name' => 'mlcomment',
  196.                     'case' => false,
  197.                     'innerClass' => 'comment',
  198.                     'delimClass' => 'comment',
  199.                     'start' => '/\\/\\*/i',
  200.                     'end' => '/\\*\\//i',
  201.                     'remember' => false,
  202.                 ),
  203.                 'codeEscape' => 
  204.                 array (
  205.                     'name' => 'codeEscape',
  206.                     'case' => false,
  207.                     'innerClass' => 'default',
  208.                     'delimClass' => 'inlinetags',
  209.                     'start' => '/\\?\\>/i',
  210.                     'end' => '/\\<\\?(php|=)?/i',
  211.                     'remember' => false,
  212.                 ),
  213.             ),
  214.             'keywords' => 
  215.             array (
  216.                 'reserved' => 
  217.                 array (
  218.                     'name' => 'reserved',
  219.                     'line' => 46,
  220.                     'innerClass' => 'reserved',
  221.                     'case' => false,
  222.                     'inherits' => 'identifier',
  223.                     'match' => 
  224.                     array (
  225.                         'echo' => true,
  226.                         'foreach' => true,
  227.                         'else' => true,
  228.                         'if' => true,
  229.                         'elseif' => true,
  230.                         'for' => true,
  231.                         'as' => true,
  232.                         'while' => true,
  233.                         'break' => true,
  234.                         'continue' => true,
  235.                         'class' => true,
  236.                         'switch' => true,
  237.                         'case' => true,
  238.                         'array' => true,
  239.                         'default' => true,
  240.                         'do' => true,
  241.                         'exit' => true,
  242.                         'function' => true,
  243.                         'global' => true,
  244.                         'include' => true,
  245.                         'include_once' => true,
  246.                         'require' => true,
  247.                         'require_once' => true,
  248.                         'isset' => true,
  249.                         'empty' => true,
  250.                         'list' => true,
  251.                         'new' => true,
  252.                         'static' => true,
  253.                         'var' => true,
  254.                         'return' => true,
  255.                         'null' => true,
  256.                         'true' => true,
  257.                         'false' => true,
  258.                     ),
  259.                 ),
  260.             ),
  261.             'blocks' => 
  262.             array (
  263.                 'var' => 
  264.                 array (
  265.                     'name' => 'var',
  266.                     'case' => false,
  267.                     'innerClass' => 'var',
  268.                     'match' => '/\\$[a-z_]\\w*/i',
  269.                     'multiline' => false,
  270.                 ),
  271.                 'escaped' => 
  272.                 array (
  273.                     'name' => 'escaped',
  274.                     'case' => false,
  275.                     'innerClass' => 'string',
  276.                     'match' => '/\\\\\\\\|\\\\"|\\\\\'|\\\\\\$/i',
  277.                     'multiline' => false,
  278.                 ),
  279.                 'identifier' => 
  280.                 array (
  281.                     'name' => 'identifier',
  282.                     'case' => false,
  283.                     'innerClass' => 'identifier',
  284.                     'match' => '/[a-z_]\\w*/i',
  285.                     'multiline' => false,
  286.                 ),
  287.                 'comment' => 
  288.                 array (
  289.                     'name' => 'comment',
  290.                     'case' => false,
  291.                     'innerClass' => 'comment',
  292.                     'match' => '/(#|\\/\\/).+/i',
  293.                     'multiline' => false,
  294.                 ),
  295.             ),
  296.             'toplevel' => 
  297.             array (
  298.                 'regions' => 
  299.                 array (
  300.                     0 => 'phpTags',
  301.                 ),
  302.             ),
  303.             'case' => false,
  304.             'defClass' => 'default',
  305.         );
  306.  
  307.         parent::_init($options);
  308.     }
  309. }
  310.  
  311. ?>

Prev Up Next
Creating a syntax highlighter

Documentation generated on Mon, 11 Mar 2019 13:51:46 -0400 by phpDocumentor 1.4.4. PEAR Logo Copyright © PHP Group 2004.