https://www.mediawiki.org/wiki/Special:Code/MediaWiki/112679

Revision: 112679
Author:   gwicke
Date:     2012-02-29 10:49:00 +0000 (Wed, 29 Feb 2012)
Log Message:
-----------
Support capturing regexps in dumpGrepper.

Modified Paths:
--------------
    trunk/extensions/VisualEditor/tests/parser/dumpGrepper.js

Modified: trunk/extensions/VisualEditor/tests/parser/dumpGrepper.js
===================================================================
--- trunk/extensions/VisualEditor/tests/parser/dumpGrepper.js   2012-02-29 
10:17:22 UTC (rev 112678)
+++ trunk/extensions/VisualEditor/tests/parser/dumpGrepper.js   2012-02-29 
10:49:00 UTC (rev 112679)
@@ -19,10 +19,15 @@
 DumpGrepper.prototype.constructor = DumpGrepper;
 
 DumpGrepper.prototype.grepRev = function ( revision ) {
-       var bits = revision.text.split( this.re );
-       if ( bits.length > 1 ) {
-               this.emit( 'match', revision, bits );
+       var result = this.re.exec( revision.text ),
+               matches = [];
+       while ( result ) {
+               matches.push( result );
+               result = this.re.exec( revision.text );
        }
+       if ( matches.length ) {
+               this.emit( 'match', revision, matches );
+       }
 };
 
 module.exports.DumpGrepper = DumpGrepper;
@@ -46,7 +51,7 @@
                process.exit( 0 );
        }
        
-       var flags = '';
+       var flags = 'g';
        if(argv.i) {
                flags += 'i';
        }
@@ -57,14 +62,21 @@
                grepper = new DumpGrepper( re );
 
        reader.on( 'revision', grepper.grepRev.bind( grepper ) );
-       grepper.on( 'match', function ( revision, bits ) {
-               for ( var i = 0, l = bits.length; i < l-1; i += 2 ) {
+       grepper.on( 'match', function ( revision, matches ) {
+               for ( var i = 0, l = matches.length; i < l; i++ ) {
                        console.log( '== Match: [[' + revision.page.title + ']] 
==' );
-                       var m = bits[i+1];
+                       var m = matches[i];
+                       //console.warn( JSON.stringify( m.index, null, 2 ) );
                        if ( argv.color ) {
-                               console.log( bits[i].substr(-40) + m.green + 
bits[i+2].substr( 0, 40 ) );
+                               console.log( 
+                                       revision.text.substr( m.index - 40, 40 
) + 
+                                       m[0].green + 
+                                       revision.text.substr( m.index + 
m[0].length, 40 ) );
                        } else {
-                               console.log( bits[i].substr(-40) + m + 
bits[i+2].substr( 0, 40 ) );
+                               console.log( 
+                                       revision.text.substr( m.index, -40 ) + 
+                                       m[0] + 
+                                       revision.text.substr( m.index + 
m[0].length, 40 ) );
                        }
                }
        } );


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

Reply via email to