Add MWTidy::factory()
authorTim Starling <tstarling@wikimedia.org>
Tue, 26 Jul 2016 05:10:42 +0000 (15:10 +1000)
committerTim Starling <tstarling@wikimedia.org>
Tue, 26 Jul 2016 05:12:55 +0000 (15:12 +1000)
A convenient factory function to eliminate code duplication in
ParserMigration's MigrationEditPage::tidyParserOutput().

Change-Id: I058912885025e7a9402912236c65c44e32ef036e

includes/parser/MWTidy.php

index 32d8373..46ea773 100644 (file)
@@ -101,31 +101,42 @@ class MWTidy {
                        } 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 TidyDriverBase
+        */
+       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