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

Revision: 112490
Author:   gwicke
Date:     2012-02-27 16:40:01 +0000 (Mon, 27 Feb 2012)
Log Message:
-----------
Add a simple dump grepper using DumpReader. Useful to inform parser design
decisions, and as a way to exercise the dump reader in preparation for tests
over full dumps.

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

Added: trunk/extensions/VisualEditor/tests/parser/dumpGrepper.js
===================================================================
--- trunk/extensions/VisualEditor/tests/parser/dumpGrepper.js                   
        (rev 0)
+++ trunk/extensions/VisualEditor/tests/parser/dumpGrepper.js   2012-02-27 
16:40:01 UTC (rev 112490)
@@ -0,0 +1,52 @@
+var dumpReader = require('./dumpReader.js'),
+       events = require('events'),
+       optimist = require('optimist');
+
+function DumpGrepper ( regexp ) {
+       // inherit from EventEmitter
+       //events.EventEmitter.call(this);
+       this.re = regexp;
+}
+
+DumpGrepper.prototype = new events.EventEmitter();
+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 );
+       }
+}
+
+module.exports.DumpGrepper = DumpGrepper;
+
+if (module === require.main) {
+       var argv = optimist.usage( 'Usage: $0 <regexp>', {
+               'i': {
+                       description: 'Case-insensitive matching',
+                       'boolean': true,
+                       'default': false
+               }
+       } ).argv;
+       
+       console.log( argv );
+
+       var flags = '';
+       if(argv.i) {
+               flags += 'i';
+       }
+
+       var reader = new dumpReader.DumpReader(),
+               grepper = new DumpGrepper( new RegExp( '(' + argv._[0] + ')', 
flags ) );
+
+       reader.on( 'revision', grepper.grepRev.bind( grepper ) );
+       grepper.on( 'match', function ( revision, bits ) {
+               console
+               console.log( 'Match:' + revision.page.title )
+               console.log( bits.map( function ( s ) { return s.substr(0, 40) 
} ) );
+       } );
+       process.stdin.setEncoding('utf8');
+       process.stdin.on('data', reader.push.bind(reader) );
+       process.stdin.resume();
+}
+


Property changes on: trunk/extensions/VisualEditor/tests/parser/dumpGrepper.js
___________________________________________________________________
Added: svn:eol-style
   + native


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

Reply via email to