[ Index ]

PHP Cross Reference of DokuWiki

title

Body

[close]

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

   1  <?php
   2  
   3  namespace dokuwiki\Parsing\ParserMode;
   4  
   5  use dokuwiki\Parsing\Lexer\Lexer;
   6  
   7  class Smiley extends AbstractMode
   8  {
   9      protected $smileys = [];
  10      protected $pattern = '';
  11  
  12      /**
  13       * Smiley constructor.
  14       * @param string[] $smileys
  15       */
  16      public function __construct($smileys)
  17      {
  18          $this->smileys = $smileys;
  19      }
  20  
  21      /** @inheritdoc */
  22      public function preConnect()
  23      {
  24          if (!count($this->smileys) || $this->pattern != '') return;
  25  
  26          $sep = '';
  27          foreach ($this->smileys as $smiley) {
  28              $this->pattern .= $sep . '(?<=\W|^)' . Lexer::escape($smiley) . '(?=\W|$)';
  29              $sep = '|';
  30          }
  31      }
  32  
  33      /** @inheritdoc */
  34      public function connectTo($mode)
  35      {
  36          if (!count($this->smileys)) return;
  37  
  38          if (strlen($this->pattern) > 0) {
  39              $this->Lexer->addSpecialPattern($this->pattern, $mode, 'smiley');
  40          }
  41      }
  42  
  43      /** @inheritdoc */
  44      public function getSort()
  45      {
  46          return 230;
  47      }
  48  }