Clean up Wikibase related code
This fixes some warnings in my PHPStorm, gets rid of duplicate code, inlines constants that do not make the code easier to read, and more. Change-Id: I02f446491509043f5d3e51e26e932f76c9ecb6cf
This commit is contained in:
parent
9742440a7a
commit
8b8d91a771
|
@ -2,7 +2,6 @@
|
||||||
|
|
||||||
use DataValues\StringValue;
|
use DataValues\StringValue;
|
||||||
use ValueFormatters\Exceptions\MismatchingDataValueTypeException;
|
use ValueFormatters\Exceptions\MismatchingDataValueTypeException;
|
||||||
use ValueFormatters\FormattingException;
|
|
||||||
use ValueFormatters\ValueFormatter;
|
use ValueFormatters\ValueFormatter;
|
||||||
use Wikibase\Lib\SnakFormatter;
|
use Wikibase\Lib\SnakFormatter;
|
||||||
|
|
||||||
|
@ -17,22 +16,25 @@ use Wikibase\Lib\SnakFormatter;
|
||||||
|
|
||||||
class MathFormatter implements ValueFormatter {
|
class MathFormatter implements ValueFormatter {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string One of the SnakFormatter::FORMAT_... constants.
|
||||||
|
*/
|
||||||
private $format;
|
private $format;
|
||||||
|
|
||||||
/*
|
/**
|
||||||
* Loads format to distinguish the type of formatting
|
* Loads format to distinguish the type of formatting
|
||||||
*
|
*
|
||||||
* @param string $format
|
* @param string $format One of the SnakFormatter::FORMAT_... constants.
|
||||||
*
|
*
|
||||||
* @throws InvalidArgumentException
|
* @throws InvalidArgumentException
|
||||||
*/
|
*/
|
||||||
public function __construct( $format ) {
|
public function __construct( $format ) {
|
||||||
switch ( $format ) {
|
switch ( $format ) {
|
||||||
case ( SnakFormatter::FORMAT_HTML ):
|
case SnakFormatter::FORMAT_PLAIN:
|
||||||
case ( SnakFormatter::FORMAT_HTML_DIFF ):
|
case SnakFormatter::FORMAT_WIKI:
|
||||||
case ( SnakFormatter::FORMAT_HTML_WIDGET ):
|
case SnakFormatter::FORMAT_HTML:
|
||||||
case ( SnakFormatter::FORMAT_WIKI ):
|
case SnakFormatter::FORMAT_HTML_DIFF:
|
||||||
case ( SnakFormatter::FORMAT_PLAIN ):
|
case SnakFormatter::FORMAT_HTML_WIDGET:
|
||||||
$this->format = $format;
|
$this->format = $format;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -40,44 +42,40 @@ class MathFormatter implements ValueFormatter {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/**
|
||||||
*
|
|
||||||
* @param StringValue $value
|
* @param StringValue $value
|
||||||
*
|
*
|
||||||
|
* @throws MismatchingDataValueTypeException
|
||||||
* @return string
|
* @return string
|
||||||
* @throws \ValueFormatters\Exceptions\MismatchingDataValueTypeException
|
|
||||||
*/
|
*/
|
||||||
public function format( $value ) {
|
public function format( $value ) {
|
||||||
if ( !( $value instanceof StringValue ) ) {
|
if ( !( $value instanceof StringValue ) ) {
|
||||||
throw new MismatchingDataValueTypeException( 'StringValue', get_class( $value ) );
|
throw new MismatchingDataValueTypeException( 'StringValue', get_class( $value ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
$tex = $value->getValue();
|
$tex = $value->getValue();
|
||||||
|
|
||||||
switch ( $this->format ) {
|
switch ( $this->format ) {
|
||||||
case ( SnakFormatter::FORMAT_PLAIN ):
|
case SnakFormatter::FORMAT_PLAIN:
|
||||||
return "$tex";
|
return $tex;
|
||||||
case ( SnakFormatter::FORMAT_WIKI ):
|
case SnakFormatter::FORMAT_WIKI:
|
||||||
return "<math>$tex</math>";
|
return "<math>$tex</math>";
|
||||||
case ( SnakFormatter::FORMAT_HTML ):
|
default:
|
||||||
case ( SnakFormatter::FORMAT_HTML_WIDGET ):
|
|
||||||
case ( SnakFormatter::FORMAT_HTML_DIFF ):
|
|
||||||
$renderer = new MathMathML( $tex );
|
$renderer = new MathMathML( $tex );
|
||||||
if ( $renderer->checkTex() ) {
|
if ( $renderer->checkTex() && $renderer->render() ) {
|
||||||
if ( $renderer->render() ) {
|
return $renderer->getHtmlOutput();
|
||||||
return $renderer->getHtmlOutput();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// TeX string is not valid or rendering failed
|
// TeX string is not valid or rendering failed
|
||||||
return $renderer->getLastError();
|
return $renderer->getLastError();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* @return string One of the SnakFormatter::FORMAT_... constants.
|
||||||
* @return format
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public function getFormat() {
|
public function getFormat() {
|
||||||
return $this->format;
|
return $this->format;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,8 +9,6 @@
|
||||||
* @author Moritz Schubotz
|
* @author Moritz Schubotz
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use MediaWiki\Logger\LoggerFactory;
|
|
||||||
|
|
||||||
class MathInputCheckRestbase extends MathInputCheck {
|
class MathInputCheckRestbase extends MathInputCheck {
|
||||||
private $restbaseInterface;
|
private $restbaseInterface;
|
||||||
|
|
||||||
|
|
|
@ -9,12 +9,8 @@ use DataValues\StringValue;
|
||||||
use DataValues\NumberValue;
|
use DataValues\NumberValue;
|
||||||
|
|
||||||
class MathFormatterTest extends MediaWikiTestCase {
|
class MathFormatterTest extends MediaWikiTestCase {
|
||||||
const SOME_TEX = "a^2+b^2=c^2";
|
|
||||||
const FORMAT_PLAIN = 'text/plain';
|
const SOME_TEX = 'a^2+b^2=c^2';
|
||||||
const FORMAT_HTML = 'text/html';
|
|
||||||
const FORMAT_XWIKI = 'text/x-wiki';
|
|
||||||
const FORMAT_UNKNOWN = 'unknown/unknown';
|
|
||||||
const FORMAT_VALUE = "";
|
|
||||||
|
|
||||||
protected static $hasRestbase;
|
protected static $hasRestbase;
|
||||||
|
|
||||||
|
@ -23,19 +19,12 @@ class MathFormatterTest extends MediaWikiTestCase {
|
||||||
self::$hasRestbase = $rbi->checkBackend( true );
|
self::$hasRestbase = $rbi->checkBackend( true );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets up the fixture, for example, opens a network connection.
|
|
||||||
* This method is called before a test is executed.
|
|
||||||
*/
|
|
||||||
protected function setUp() {
|
protected function setUp() {
|
||||||
parent::setUp();
|
parent::setUp();
|
||||||
if ( !self::$hasRestbase ) {
|
|
||||||
$this->markTestSkipped( "Can not connect to Restbase Math interface." );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected function tearDown() {
|
if ( !self::$hasRestbase ) {
|
||||||
parent::tearDown();
|
$this->markTestSkipped( 'Can not connect to Restbase Math interface.' );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -43,16 +32,16 @@ class MathFormatterTest extends MediaWikiTestCase {
|
||||||
* @covers MathFormatter::__construct()
|
* @covers MathFormatter::__construct()
|
||||||
*/
|
*/
|
||||||
public function testBasics() {
|
public function testBasics() {
|
||||||
$formatter = new MathFormatter( self::FORMAT_PLAIN );
|
$formatter = new MathFormatter( 'text/plain' );
|
||||||
// check if the format input was corretly passed to the class
|
// check if the format input was corretly passed to the class
|
||||||
$this->assertEquals( self::FORMAT_PLAIN, $formatter->getFormat(), 'test getFormat' );
|
$this->assertSame( 'text/plain', $formatter->getFormat(), 'test getFormat' );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @expectedException ValueFormatters\Exceptions\MismatchingDataValueTypeException
|
* @expectedException ValueFormatters\Exceptions\MismatchingDataValueTypeException
|
||||||
*/
|
*/
|
||||||
public function testNotStringValue() {
|
public function testNotStringValue() {
|
||||||
$formatter = new MathFormatter( self::FORMAT_PLAIN );
|
$formatter = new MathFormatter( 'text/plain' );
|
||||||
$formatter->format( new NumberValue( 0 ) );
|
$formatter->format( new NumberValue( 0 ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -60,7 +49,7 @@ class MathFormatterTest extends MediaWikiTestCase {
|
||||||
* @expectedException ValueFormatters\Exceptions\MismatchingDataValueTypeException
|
* @expectedException ValueFormatters\Exceptions\MismatchingDataValueTypeException
|
||||||
*/
|
*/
|
||||||
public function testNullValue() {
|
public function testNullValue() {
|
||||||
$formatter = new MathFormatter( self::FORMAT_PLAIN );
|
$formatter = new MathFormatter( 'text/plain' );
|
||||||
$formatter->format( null );
|
$formatter->format( null );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -68,33 +57,29 @@ class MathFormatterTest extends MediaWikiTestCase {
|
||||||
* @expectedException InvalidArgumentException
|
* @expectedException InvalidArgumentException
|
||||||
*/
|
*/
|
||||||
public function testUnknownFormat() {
|
public function testUnknownFormat() {
|
||||||
$formatter = new MathFormatter( self::FORMAT_UNKNOWN );
|
new MathFormatter( 'unknown/unknown' );
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testFormatPlain() {
|
public function testFormatPlain() {
|
||||||
$formatter = new MathFormatter( self::FORMAT_PLAIN );
|
$formatter = new MathFormatter( 'text/plain' );
|
||||||
$value = new StringValue( self::SOME_TEX );
|
$value = new StringValue( self::SOME_TEX );
|
||||||
$resultFormat = $formatter->format( $value );
|
$resultFormat = $formatter->format( $value );
|
||||||
$this->assertEquals( self::SOME_TEX, $resultFormat,
|
$this->assertSame( self::SOME_TEX, $resultFormat );
|
||||||
'Results should be equal' );
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testFormatHtml() {
|
public function testFormatHtml() {
|
||||||
$formatter = new MathFormatter( self::FORMAT_HTML );
|
$formatter = new MathFormatter( 'text/html' );
|
||||||
$value = new StringValue( self::SOME_TEX );
|
$value = new StringValue( self::SOME_TEX );
|
||||||
$resultFormat = $formatter->format( $value );
|
$resultFormat = $formatter->format( $value );
|
||||||
$this->assertContains( '</math>', $resultFormat,
|
$this->assertContains( '</math>', $resultFormat, 'Result must contain math-tag' );
|
||||||
'Result must contain math-tag' );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testFormatXWiki() {
|
public function testFormatXWiki() {
|
||||||
$tex = self::SOME_TEX;
|
$tex = self::SOME_TEX;
|
||||||
$formatter = new MathFormatter( self::FORMAT_XWIKI );
|
$formatter = new MathFormatter( 'text/x-wiki' );
|
||||||
$value = new StringValue( self::SOME_TEX );
|
$value = new StringValue( self::SOME_TEX );
|
||||||
$resultFormat = $formatter->format( $value );
|
$resultFormat = $formatter->format( $value );
|
||||||
$this->assertEquals( "<math>$tex</math>", $resultFormat,
|
$this->assertSame( "<math>$tex</math>", $resultFormat, 'Tex wasn\'t properly wrapped' );
|
||||||
'Tex wasn\'t properly wrapped' );
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue