[ Index ]

PHP Cross Reference of DokuWiki

title

Body

[close]

/inc/Parsing/ParserMode/ -> Entity.php (source)

   1  <?php
   2  
   3  namespace dokuwiki\Parsing\ParserMode;
   4  
   5  use dokuwiki\Parsing\Handler;
   6  use dokuwiki\Parsing\Lexer\Lexer;
   7  
   8  class Entity extends AbstractMode
   9  {
  10      protected $entities = [];
  11      protected $pattern = '';
  12  
  13      /**
  14       * Entity constructor.
  15       * @param string[] $entities
  16       */
  17      public function __construct($entities)
  18      {
  19          $this->entities = $entities;
  20      }
  21  
  22      /** @inheritdoc */
  23      public function getSort()
  24      {
  25          return 260;
  26      }
  27  
  28      /** @inheritdoc */
  29      public function preConnect()
  30      {
  31          if (!count($this->entities) || $this->pattern != '') return;
  32  
  33          $sep = '';
  34          foreach ($this->entities as $entity) {
  35              $this->pattern .= $sep . Lexer::escape($entity);
  36              $sep = '|';
  37          }
  38      }
  39  
  40      /** @inheritdoc */
  41      public function connectTo($mode)
  42      {
  43          if (!count($this->entities)) return;
  44  
  45          if ((string) $this->pattern !== '') {
  46              $this->Lexer->addSpecialPattern($this->pattern, $mode, 'entity');
  47          }
  48      }
  49  
  50      /** @inheritdoc */
  51      public function handle($match, $state, $pos, Handler $handler)
  52      {
  53          $handler->addCall('entity', [$match], $pos);
  54          return true;
  55      }
  56  }