Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
6 / 6
100.00% covered (success)
100.00%
3 / 3
CRAP
100.00% covered (success)
100.00%
1 / 1
MathDataUpdater
100.00% covered (success)
100.00%
6 / 6
100.00% covered (success)
100.00%
3 / 3
5
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 processStatement
100.00% covered (success)
100.00%
3 / 3
100.00% covered (success)
100.00%
1 / 1
2
 updateParserOutput
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
2
1<?php
2
3namespace MediaWiki\Extension\Math;
4
5use MediaWiki\Parser\ParserOutput;
6use Wikibase\DataModel\Services\Entity\PropertyDataTypeMatcher;
7use Wikibase\DataModel\Statement\Statement;
8use Wikibase\Repo\ParserOutput\StatementDataUpdater;
9
10/**
11 * Add required styles for mathematical formulae to the ParserOutput.
12 *
13 * @license GPL-2.0-or-later
14 * @author Moritz Schubotz
15 */
16class MathDataUpdater implements StatementDataUpdater {
17
18    /** @var bool */
19    private $hasMath = false;
20
21    /**
22     * @var PropertyDataTypeMatcher
23     */
24    private $propertyDataTypeMatcher;
25
26    /**
27     * @inheritDoc
28     */
29    public function __construct( PropertyDataTypeMatcher $propertyDataTypeMatcher ) {
30        $this->propertyDataTypeMatcher = $propertyDataTypeMatcher;
31    }
32
33    /**
34     * Extract some data or do processing on a Statement during parsing.
35     *
36     * This method is normally invoked when processing a StatementList
37     * for all Statements on a StatementListProvider (e.g. an Item).
38     *
39     * @param Statement $statement
40     */
41    public function processStatement( Statement $statement ) {
42        $propertyId = $statement->getPropertyId();
43        if ( $this->propertyDataTypeMatcher->isMatchingDataType( $propertyId, 'math' ) ) {
44            $this->hasMath = true;
45        }
46    }
47
48    /**
49     * Update extension data, properties or other data in ParserOutput.
50     * These updates are invoked when EntityContent::getParserOutput is called.
51     *
52     * @param ParserOutput $parserOutput
53     */
54    public function updateParserOutput( ParserOutput $parserOutput ) {
55        if ( $this->hasMath ) {
56            $parserOutput->addModuleStyles( [ 'ext.math.styles' ] );
57        }
58    }
59}