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