mediawiki-extensions-Math/MathValidator.php
lyrianos93 946a18d14c Implement datatype 'Math' for Wikidata
This change implements all components to use the datatype 'Math' in Wikidata.
Because 'String 'is used as value type, only the Formatter and Validator are needed to be implemended.

The components are:
* hooks
* Formatter class
* Validator class
* Test cases

Bug: T67397
Change-Id: Ic64fd6c8560f48052e2db24ae1f013d48a82b5e9
2016-01-11 22:29:29 +00:00

51 lines
1.2 KiB
PHP

<?php
use ValueFormatters\Exceptions\MismatchingDataValueTypeException;
use ValueValidators\Result;
use ValueValidators\ValueValidator;
use ValueValidators\Error;
use DataValues\StringValue;
// @author Duc Linh Tran, Julian Hilbig, Moritz Schubotz
class MathValidator implements ValueValidator {
/**
* Validates a value with MathInputCheckRestbase
*
* @param mixed $value The value to validate
*
* @return \ValueValidators\Result
* @throws ValueFormatters\Exceptions\MismatchingDataValueTypeException
*/
public function validate( $value ) {
if ( !( $value instanceof StringValue ) ) {
throw new MismatchingDataValueTypeException( 'StringValue', get_class( $value ) );
}
// get input String from value
$tex = $value->getValue();
$checker = new MathInputCheckRestbase( $tex );
if ( $checker->isValid() ) {
return Result::newSuccess();
}
// TeX string is not valid
return Result::newError(
array(
Error::newError( null, null, 'malformed-value', $checker->getError() )
)
);
}
/**
* @see ValueValidator::setOptions()
*
* @param array $options
*/
public function setOptions( array $options ) {
// Do nothing. This method shouldn't even be in the interface.
}
}