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