xref: /dokuwiki/inc/Parsing/ParserMode/Unformatted.php (revision 71096e46fcbfaeaa808667aba794e77fe2780169)
1be906b56SAndreas Gohr<?php
2be906b56SAndreas Gohr
3be906b56SAndreas Gohrnamespace dokuwiki\Parsing\ParserMode;
4be906b56SAndreas Gohr
5*71096e46SAndreas Gohruse dokuwiki\Parsing\Handler;
6*71096e46SAndreas Gohr
7be906b56SAndreas Gohrclass Unformatted extends AbstractMode
8be906b56SAndreas Gohr{
9be906b56SAndreas Gohr    /** @inheritdoc */
10*71096e46SAndreas Gohr    public function getSort()
11*71096e46SAndreas Gohr    {
12*71096e46SAndreas Gohr        return 170;
13*71096e46SAndreas Gohr    }
14*71096e46SAndreas Gohr
15*71096e46SAndreas Gohr    /** @inheritdoc */
16be906b56SAndreas Gohr    public function connectTo($mode)
17be906b56SAndreas Gohr    {
18be906b56SAndreas Gohr        $this->Lexer->addEntryPattern('<nowiki>(?=.*</nowiki>)', $mode, 'unformatted');
19be906b56SAndreas Gohr        $this->Lexer->addEntryPattern('%%(?=.*%%)', $mode, 'unformattedalt');
20be906b56SAndreas Gohr    }
21be906b56SAndreas Gohr
22be906b56SAndreas Gohr    /** @inheritdoc */
23be906b56SAndreas Gohr    public function postConnect()
24be906b56SAndreas Gohr    {
25be906b56SAndreas Gohr        $this->Lexer->addExitPattern('</nowiki>', 'unformatted');
26be906b56SAndreas Gohr        $this->Lexer->addExitPattern('%%', 'unformattedalt');
27be906b56SAndreas Gohr        $this->Lexer->mapHandler('unformattedalt', 'unformatted');
28be906b56SAndreas Gohr    }
29be906b56SAndreas Gohr
30be906b56SAndreas Gohr    /** @inheritdoc */
31*71096e46SAndreas Gohr    public function handle($match, $state, $pos, Handler $handler)
32be906b56SAndreas Gohr    {
33*71096e46SAndreas Gohr        if ($state == DOKU_LEXER_UNMATCHED) {
34*71096e46SAndreas Gohr            $handler->addCall('unformatted', [$match], $pos);
35*71096e46SAndreas Gohr        }
36*71096e46SAndreas Gohr        return true;
37be906b56SAndreas Gohr    }
38be906b56SAndreas Gohr}
39