Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
79.50% covered (warning)
79.50%
128 / 161
58.82% covered (warning)
58.82%
10 / 17
CRAP
0.00% covered (danger)
0.00%
0 / 1
StripState
80.00% covered (warning)
80.00%
128 / 160
58.82% covered (warning)
58.82%
10 / 17
61.20
0.00% covered (danger)
0.00%
0 / 1
 __construct
100.00% covered (success)
100.00%
14 / 14
100.00% covered (success)
100.00%
1 / 1
3
 addNoWiki
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 addGeneral
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 addExtTag
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 addParsoidOpaque
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 addItem
80.00% covered (warning)
80.00%
4 / 5
0.00% covered (danger)
0.00%
0 / 1
3.07
 unstripGeneral
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 unstripNoWiki
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 unstripParsoid
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 replaceNoWikis
75.00% covered (warning)
75.00%
12 / 16
0.00% covered (danger)
0.00%
0 / 1
5.39
 split
66.67% covered (warning)
66.67%
42 / 63
0.00% covered (danger)
0.00%
0 / 1
17.33
 unstripBoth
100.00% covered (success)
100.00%
3 / 3
100.00% covered (success)
100.00%
1 / 1
1
 unstripType
90.00% covered (success)
90.00%
27 / 30
0.00% covered (danger)
0.00%
0 / 1
9.08
 getLimitationWarning
66.67% covered (warning)
66.67%
2 / 3
0.00% covered (danger)
0.00%
0 / 1
2.15
 getWarning
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 getLimitReport
100.00% covered (success)
100.00%
14 / 14
100.00% covered (success)
100.00%
1 / 1
1
 killMarkers
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2/**
3 * Holder for stripped items when parsing wiki markup.
4 *
5 * @license GPL-2.0-or-later
6 * @file
7 * @ingroup Parser
8 */
9
10namespace MediaWiki\Parser;
11
12use Closure;
13use InvalidArgumentException;
14use Wikimedia\Parsoid\Ext\ParsoidExtensionAPI;
15use Wikimedia\Parsoid\Fragments\PFragment;
16
17/**
18 * @todo document, briefly.
19 * @newable
20 * @ingroup Parser
21 */
22class StripState {
23    /** @var array[] */
24    protected $data;
25    /** @var array[] */
26    protected $extra;
27    /** @var string */
28    protected $regex;
29
30    protected ?Parser $parser;
31
32    /** @var array */
33    protected $circularRefGuard;
34    /** @var int */
35    protected $depth = 0;
36    /** @var int */
37    protected $highestDepth = 0;
38    /** @var int */
39    protected $expandSize = 0;
40
41    /** @var int */
42    protected $depthLimit = 20;
43    /** @var int */
44    protected $sizeLimit = 5_000_000;
45
46    /**
47     * @stable to call
48     *
49     * @param Parser|null $parser
50     * @param array $options
51     */
52    public function __construct( ?Parser $parser = null, $options = [] ) {
53        $this->data = [
54            'nowiki' => [],
55            'general' => [],
56            'exttag' => [],
57            'parsoid' => [],
58        ];
59        $this->extra = [];
60        $this->regex = '/' . Parser::MARKER_PREFIX . "([^\x7f<>&'\"]+)" . Parser::MARKER_SUFFIX . '/';
61        $this->circularRefGuard = [];
62        $this->parser = $parser;
63
64        if ( isset( $options['depthLimit'] ) ) {
65            $this->depthLimit = $options['depthLimit'];
66        }