<?php namespace dokuwiki\Parsing\ParserMode; use dokuwiki\Parsing\Lexer\Lexer; class Smiley extends AbstractMode { protected $smileys = []; protected $pattern = ''; /** * Smiley constructor. * @param string[] $smileys */ public function __construct($smileys) { $this->smileys = $smileys; } /** @inheritdoc */ public function preConnect() { if (!count($this->smileys) || $this->pattern != '') return; $sep = ''; foreach ($this->smileys as $smiley) { $this->pattern .= $sep . '(?<=\W|^)' . Lexer::escape($smiley) . '(?=\W|$)'; $sep = '|'; } } /** @inheritdoc */ public function connectTo($mode) { if (!count($this->smileys)) return; if (strlen($this->pattern) > 0) { $this->Lexer->addSpecialPattern($this->pattern, $mode, 'smiley'); } } /** @inheritdoc */ public function getSort() { return 230; } }