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