summaryrefslogtreecommitdiff
path: root/platform/www/inc/Parsing/ParserMode/Smiley.php
diff options
context:
space:
mode:
Diffstat (limited to 'platform/www/inc/Parsing/ParserMode/Smiley.php')
-rw-r--r--platform/www/inc/Parsing/ParserMode/Smiley.php48
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;
+ }
+}