jenkins-bot has submitted this change and it was merged. ( 
https://gerrit.wikimedia.org/r/351568 )

Change subject: Convert mwdoc-filter.php to Maintenance class so --wiki works
......................................................................


Convert mwdoc-filter.php to Maintenance class so --wiki works

Change-Id: Ie2fc4109bc2e7a23a6549d9705be44cf2eb858b9
---
M autoload.php
M maintenance/mwdoc-filter.php
2 files changed, 73 insertions(+), 55 deletions(-)

Approvals:
  Krinkle: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/autoload.php b/autoload.php
index 1141c39..06e863f 100644
--- a/autoload.php
+++ b/autoload.php
@@ -786,6 +786,7 @@
        'MWCryptRand' => __DIR__ . '/includes/utils/MWCryptRand.php',
        'MWDebug' => __DIR__ . '/includes/debug/MWDebug.php',
        'MWDocGen' => __DIR__ . '/maintenance/mwdocgen.php',
+       'MWDocGenFilter' => __DIR__ . '/maintenance/mwdoc-filter.php',
        'MWException' => __DIR__ . '/includes/exception/MWException.php',
        'MWExceptionHandler' => __DIR__ . 
'/includes/exception/MWExceptionHandler.php',
        'MWExceptionRenderer' => __DIR__ . 
'/includes/exception/MWExceptionRenderer.php',
diff --git a/maintenance/mwdoc-filter.php b/maintenance/mwdoc-filter.php
index 07aa282..46c5a00 100644
--- a/maintenance/mwdoc-filter.php
+++ b/maintenance/mwdoc-filter.php
@@ -38,63 +38,80 @@
  * DEALINGS IN THE SOFTWARE.
  */
 
-if ( PHP_SAPI != 'cli' ) {
-       die( "This filter can only be run from the command line.\n" );
-}
+require_once __DIR__ . '/Maintenance.php';
 
-$source = file_get_contents( $argv[1] );
-$tokens = token_get_all( $source );
+/**
+ * Maintenance script that builds doxygen documentation.
+ * @ingroup Maintenance
+ */
+class MWDocGenFilter extends Maintenance {
+       public function __construct() {
+               parent::__construct();
+               $this->addDescription( 'Doxygen filter to fix member variable 
types in documentation. '
+                       . 'Used by mwdocgen.php'
+               );
+               $this->addArg( 'filename', 'PHP file to filter', true );
+       }
 
-$buffer = $bufferType = null;
-foreach ( $tokens as $token ) {
-       if ( is_string( $token ) ) {
-               if ( $buffer !== null && $token === ';' ) {
-                       // If we still have a buffer and the statement has 
ended,
-                       // flush it and move on.
-                       echo $buffer;
-                       $buffer = $bufferType = null;
+       public function execute() {
+               $source = file_get_contents( $this->getArg( 0 ) );
+               $tokens = token_get_all( $source );
+
+               $buffer = $bufferType = null;
+               foreach ( $tokens as $token ) {
+                       if ( is_string( $token ) ) {
+                               if ( $buffer !== null && $token === ';' ) {
+                                       // If we still have a buffer and the 
statement has ended,
+                                       // flush it and move on.
+                                       echo $buffer;
+                                       $buffer = $bufferType = null;
+                               }
+                               echo $token;
+                               continue;
+                       }
+                       list( $id, $content ) = $token;
+                       switch ( $id ) {
+                               case T_DOC_COMMENT:
+                                       // Escape slashes so that references to 
namespaces are not
+                                       // wrongly interpreted as a Doxygen 
"\command".
+                                       $content = addcslashes( $content, '\\' 
);
+                                       // Look for instances of "@var Type" 
not followed by $name.
+                                       if ( preg_match( 
'#@var\s+([^\s]+)\s+([^\$]+)#s', $content ) ) {
+                                               $buffer = preg_replace_callback(
+                                                       // Strip the "@var 
Type" part and remember the type
+                                                       '#(@var\s+)([^\s]+)#s',
+                                                       function ( $matches ) 
use ( &$bufferType ) {
+                                                               $bufferType = 
$matches[2];
+                                                               return '';
+                                                       },
+                                                       $content
+                                               );
+                                       } else {
+                                               echo $content;
+                                       }
+                                       break;
+
+                               case T_VARIABLE:
+                                       if ( $buffer !== null ) {
+                                               echo $buffer;
+                                               echo "$bufferType $content";
+                                               $buffer = $bufferType = null;
+                                       } else {
+                                               echo $content;
+                                       }
+                                       break;
+
+                               default:
+                                       if ( $buffer !== null ) {
+                                               $buffer .= $content;
+                                       } else {
+                                               echo $content;
+                                       }
+                                       break;
+                       }
                }
-               echo $token;
-               continue;
-       }
-       list( $id, $content ) = $token;
-       switch ( $id ) {
-               case T_DOC_COMMENT:
-                       // Escape slashes so that references to namespaces are 
not
-                       // wrongly interpreted as a Doxygen "\command".
-                       $content = addcslashes( $content, '\\' );
-                       // Look for instances of "@var Type" not followed by 
$name.
-                       if ( preg_match( '#@var\s+([^\s]+)\s+([^\$]+)#s', 
$content ) ) {
-                               $buffer = preg_replace_callback(
-                                       // Strip the "@var Type" part and 
remember the type
-                                       '#(@var\s+)([^\s]+)#s',
-                                       function ( $matches ) use ( 
&$bufferType ) {
-                                               $bufferType = $matches[2];
-                                               return '';
-                                       },
-                                       $content
-                               );
-                       } else {
-                               echo $content;
-                       }
-                       break;
-
-               case T_VARIABLE:
-                       if ( $buffer !== null ) {
-                               echo $buffer;
-                               echo "$bufferType $content";
-                               $buffer = $bufferType = null;
-                       } else {
-                               echo $content;
-                       }
-                       break;
-
-               default:
-                       if ( $buffer !== null ) {
-                               $buffer .= $content;
-                       } else {
-                               echo $content;
-                       }
-                       break;
        }
 }
+
+$maintClass = 'MWDocGenFilter';
+require_once RUN_MAINTENANCE_IF_MAIN;

-- 
To view, visit https://gerrit.wikimedia.org/r/351568
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ie2fc4109bc2e7a23a6549d9705be44cf2eb858b9
Gerrit-PatchSet: 4
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Mattflaschen <[email protected]>
Gerrit-Reviewer: BryanDavis <[email protected]>
Gerrit-Reviewer: Catrope <[email protected]>
Gerrit-Reviewer: Hashar <[email protected]>
Gerrit-Reviewer: Krinkle <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to