Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
92.31% covered (success)
92.31%
12 / 13
50.00% covered (danger)
50.00%
1 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
MathValidator
92.31% covered (success)
92.31%
12 / 13
50.00% covered (danger)
50.00%
1 / 2
4.01
0.00% covered (danger)
0.00%
0 / 1
 validate
100.00% covered (success)
100.00%
12 / 12
100.00% covered (success)
100.00%
1 / 1
3
 setOptions
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2
3namespace MediaWiki\Extension\Math;
4
5use DataValues\StringValue;
6use InvalidArgumentException;
7use ValueValidators\Error;
8use ValueValidators\Result;
9use ValueValidators\ValueValidator;
10
11/**
12 * @author Duc Linh Tran
13 * @author Julian Hilbig
14 * @author Moritz Schubotz
15 */
16class MathValidator implements ValueValidator {
17
18    /**
19     * Validates a value with MediaWiki\Extension\Math\InputCheck\RestbaseChecker
20     *
21     * @param StringValue $value The value to validate
22     *
23     * @return Result
24     * @throws InvalidArgumentException if not called with a StringValue
25     */
26    public function validate( $value ) {
27        if ( !( $value instanceof StringValue ) ) {
28            throw new InvalidArgumentException( '$value must be a StringValue' );
29        }
30
31        // get input String from value
32        $tex = $value->getValue();
33        $checker = Math::getCheckerFactory()
34            ->newLocalChecker( $tex, 'tex' );
35
36        if ( $checker->isValid() ) {
37            return Result::newSuccess();
38        }
39
40        // TeX string is not valid
41        return Result::newError(
42            [
43                Error::newError( '', null, 'malformed-value', [ $checker->getError() ] )
44            ]
45        );
46    }
47
48    /**
49     * @see ValueValidator::setOptions()
50     *
51     * @param array $options
52     */
53    public function setOptions( array $options ) {
54        // Do nothing. This method shouldn't even be in the interface.
55    }
56}