diff options
Diffstat (limited to 'platform/www/inc/Parsing/ParserMode/Smiley.php')
-rw-r--r-- | platform/www/inc/Parsing/ParserMode/Smiley.php | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/platform/www/inc/Parsing/ParserMode/Smiley.php b/platform/www/inc/Parsing/ParserMode/Smiley.php new file mode 100644 index 0000000..084ccc9 --- /dev/null +++ b/platform/www/inc/Parsing/ParserMode/Smiley.php @@ -0,0 +1,48 @@ +<?php + +namespace dokuwiki\Parsing\ParserMode; + +use dokuwiki\Parsing\Lexer\Lexer; + +class Smiley extends AbstractMode +{ + protected $smileys = array(); + 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; + } +} |