1<?php
2
3use dokuwiki\Debug\PropertyDeprecationHelper;
4
5/**
6 * Define various types of modes used by the parser - they are used to
7 * populate the list of modes another mode accepts
8 */
9global $PARSER_MODES;
10$PARSER_MODES = array(
11    // containers are complex modes that can contain many other modes
12    // hr breaks the principle but they shouldn't be used in tables / lists
13    // so they are put here
14    'container' => array('listblock', 'table', 'quote', 'hr'),
15
16    // some mode are allowed inside the base mode only
17    'baseonly' => array('header'),
18
19    // modes for styling text -- footnote behaves similar to styling
20    'formatting' => array(
21        'strong', 'emphasis', 'underline', 'monospace',
22        'subscript', 'superscript', 'deleted', 'footnote'
23    ),
24
25    // modes where the token is simply replaced - they can not contain any
26    // other modes
27    'substition' => array(
28        'acronym', 'smiley', 'wordblock', 'entity',
29        'camelcaselink', 'internallink', 'media',
30        'externallink', 'linebreak', 'emaillink',
31        'windowssharelink', 'filelink', 'notoc',
32        'nocache', 'multiplyentity', 'quotes', 'rss'
33    ),
34
35    // modes which have a start and end token but inside which
36    // no other modes should be applied
37    'protected' => array('preformatted', 'code', 'file', 'php', 'html', 'htmlblock', 'phpblock'),
38
39    // inside this mode no wiki markup should be applied but lineendings
40    // and whitespace isn't preserved
41    'disabled' => array('unformatted'),
42
43    // used to mark paragraph boundaries
44    'paragraphs' => array('eol')
45);
46
47/**
48 * Class Doku_Parser
49 *
50 * @deprecated 2018-05-04
51 */
52class Doku_Parser extends \dokuwiki\Parsing\Parser {
53    use PropertyDeprecationHelper {
54        __set as protected deprecationHelperMagicSet;
55        __get as protected deprecationHelperMagicGet;
56    }
57
58    /** @inheritdoc */
59    public function __construct(Doku_Handler $handler = null) {
60        dbg_deprecated(\dokuwiki\Parsing\Parser::class);
61        $this->deprecatePublicProperty('modes', __CLASS__);
62        $this->deprecatePublicProperty('connected', __CLASS__);
63
64        if ($handler === null) {
65            $handler = new Doku_Handler();
66        }
67
68        parent::__construct($handler);
69    }
70
71    public function __set($name, $value)
72    {
73
74        if ($name === 'Handler') {
75            $this->handler = $value;
76            return;
77        }
78
79        if ($name === 'Lexer') {
80            $this->lexer = $value;
81            return;
82        }
83
84        $this->deprecationHelperMagicSet($name, $value);
85    }
86
87    public function __get($name)
88    {
89        if ($name === 'Handler') {
90            return $this->handler;
91        }
92
93        if ($name === 'Lexer') {
94            return $this->lexer;
95        }
96
97        return $this->deprecationHelperMagicGet($name);
98    }
99}
100