<?php namespace MediaWiki\Extension\Math\WikiTexVC\MMLmappings\Util; use DOMDocument; use InvalidArgumentException; use MediaWiki\Extension\Math\WikiTexVC\MMLnodes\MMLmath; /** * This Utility class has some methods for running * tests for the Tex to MathML converters in WikiTexVC. * @author Johannes Stegmüller */ class MMLTestUtil { public static function getJSON( $filePath ) { if ( !file_exists( $filePath ) ) { throw new InvalidArgumentException( "No testfile found at specified path: " . $filePath ); } return json_decode( file_get_contents( $filePath ) ); } public static function createJSONstartEnd( $start, $file ) { file_put_contents( $file, $start ? "[\n" : "\n]", FILE_APPEND ); } public static function appendToJSONFile( $dataArray, $file ) { $jsonData = json_encode( $dataArray, JSON_PRETTY_PRINT ) . ","; file_put_contents( $file, $jsonData, FILE_APPEND ); } public static function deleteFile( $file ): void { if ( file_exists( $file ) ) { unlink( $file ); } } public static function prettifyXML( $xml, $replaceHeader = true ) { $dom = new DOMDocument(); // Initial block (must before load xml string) $dom->preserveWhiteSpace = false; $dom->formatOutput = true; // End initial block $dom->loadXML( $xml ); $out = $dom->saveXML(); if ( $replaceHeader ) { // replacing the xml header in a hacky way return substr_replace( $out, "", 0, 22 ); } return $out; } public static function getMMLwrapped( $input ) { $math = new MMLmath(); $mml = $math->encapsulateRaw( $input->renderMML() ); return self::prettifyXML( $mml ); } }