* @param string $text HTML input fragment. This should not contain a
* <body> or <html> tag.
* @return string Corrected HTML output
+ * @throws MWException
*/
public static function tidy( $text ) {
$driver = self::singleton();
return $driver->tidy( $text );
}
- /**
- * Get CSS modules needed if HTML from the current driver is to be displayed.
- *
- * This is just a migration tool to allow some changes expected as part of
- * Tidy replacement (T89331) to be exposed on the client side via user
- * scripts, without actually replacing tidy. See T49673.
- *
- * @return array
- */
- public static function getModuleStyles() {
- $driver = self::singleton();
- if ( $driver && $driver instanceof MediaWiki\Tidy\RaggettBase ) {
- return [ 'mediawiki.raggett' ];
- } else {
- return [];
- }
- }
-
/**
* Check HTML for errors, used if $wgValidateAllHtml = true.
*
* @param string $text
* @param string &$errorStr Return the error string
* @return bool Whether the HTML is valid
+ * @throws MWException
*/
public static function checkErrors( $text, &$errorStr = null ) {
$driver = self::singleton();
}
}
+ /**
+ * @return bool
+ */
public static function isEnabled() {
return self::singleton() !== false;
}
+ /**
+ * @return bool|\MediaWiki\Tidy\TidyDriverBase
+ */
protected static function singleton() {
global $wgUseTidy, $wgTidyInternal, $wgTidyConf, $wgDebugTidy, $wgTidyConfig,
$wgTidyBin, $wgTidyOpts;
} else {
return false;
}
- switch ( $config['driver'] ) {
- case 'RaggettInternalHHVM':
- self::$instance = new MediaWiki\Tidy\RaggettInternalHHVM( $config );
- break;
- case 'RaggettInternalPHP':
- self::$instance = new MediaWiki\Tidy\RaggettInternalPHP( $config );
- break;
- case 'RaggettExternal':
- self::$instance = new MediaWiki\Tidy\RaggettExternal( $config );
- break;
- case 'Html5Depurate':
- self::$instance = new MediaWiki\Tidy\Html5Depurate( $config );
- break;
- case 'Html5Internal':
- self::$instance = new MediaWiki\Tidy\Html5Internal( $config );
- break;
- case 'disabled':
- return false;
- default:
- throw new MWException( "Invalid tidy driver: \"{$config['driver']}\"" );
- }
+ self::$instance = self::factory( $config );
}
return self::$instance;
}
+ /**
+ * Create a new Tidy driver object from configuration.
+ * @see $wgTidyConfig
+ * @param array $config
+ * @return bool|\MediaWiki\Tidy\TidyDriverBase
+ * @throws MWException
+ */
+ public static function factory( array $config ) {
+ switch ( $config['driver'] ) {
+ case 'RaggettInternalHHVM':
+ $instance = new MediaWiki\Tidy\RaggettInternalHHVM( $config );
+ break;
+ case 'RaggettInternalPHP':
+ $instance = new MediaWiki\Tidy\RaggettInternalPHP( $config );
+ break;
+ case 'RaggettExternal':
+ $instance = new MediaWiki\Tidy\RaggettExternal( $config );
+ break;
+ case 'Html5Depurate':
+ $instance = new MediaWiki\Tidy\Html5Depurate( $config );
+ break;
+ case 'Html5Internal':
+ $instance = new MediaWiki\Tidy\Html5Internal( $config );
+ break;
+ case 'disabled':
+ return false;
+ default:
+ throw new MWException( "Invalid tidy driver: \"{$config['driver']}\"" );
+ }
+ return $instance;
+ }
+
/**
* Set the driver to be used. This is for testing.
- * @param TidyDriverBase|false|null $instance
+ * @param MediaWiki\Tidy\TidyDriverBase|false|null $instance
*/
public static function setInstance( $instance ) {
self::$instance = $instance;