64 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
		
			
		
	
	
			64 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
|  | #!/usr/bin/env node | ||
|  | (function() { | ||
|  | 
 | ||
|  |   var fs = require('fs'); | ||
|  |   var path = require('path'); | ||
|  |   var parse = require('../parser').parse; | ||
|  |   var jsesc = require('jsesc'); | ||
|  |   var regexes = process.argv.splice(2); | ||
|  |   var first = regexes[0]; | ||
|  |   var data; | ||
|  |   var log = console.log; | ||
|  |   var flags = ''; | ||
|  |   var main = function() { | ||
|  |     if (/^(?:-h|--help|undefined)$/.test(first)) { | ||
|  |       log([ | ||
|  |         '\nUsage:\n', | ||
|  |         '\tregjsparser [regex ...]', | ||
|  |         '\tregjsparser [-f | --flags] u [regex ...]', | ||
|  |         '\tregjsparser [-v | --version]', | ||
|  |         '\tregjsparser [-h | --help]', | ||
|  |         '\nExamples:\n', | ||
|  |         '\tregjsparser \'^foo.bar$\'', | ||
|  |         '\tregjsparser \'[a-zA-Z0-9]\'' | ||
|  |       ].join('\n')); | ||
|  |       return process.exit(1); | ||
|  |     } | ||
|  | 
 | ||
|  |     if (/^(?:-v|--version)$/.test(first)) { | ||
|  |       log('v%s', require(path.resolve(__dirname, '../package.json')).version); | ||
|  |       return process.exit(1); | ||
|  |     } | ||
|  | 
 | ||
|  |     if (/^(?:-f|--flags)$/.test(first)) { | ||
|  |       flags = regexes[1]; | ||
|  |       regexes = regexes.slice(2); | ||
|  |     } | ||
|  | 
 | ||
|  |     regexes.forEach(function(snippet) { | ||
|  |       try { | ||
|  |         result = parse(snippet, flags); | ||
|  |         log(jsesc(result, { | ||
|  |           'json': true, | ||
|  |           'compact': false, | ||
|  |           'indent': '\t' | ||
|  |         })); | ||
|  |       } catch(error) { | ||
|  |         log(error.message + '\n'); | ||
|  |         log('Error: failed to parse. Make sure the regular expression is valid.'); | ||
|  |         log('If you think this is a bug in regjsparser, please report it:'); | ||
|  |         log('\thttps://github.com/jviereck/regjsparser/issues/new'); | ||
|  |         log('\nStack trace:\n'); | ||
|  |         log(error.stack); | ||
|  |         return process.exit(1); | ||
|  |       } | ||
|  |     }); | ||
|  |     // Return with exit status 0 outside of the `forEach` loop, in case | ||
|  |     // multiple regular expressions were passed in. | ||
|  |     return process.exit(0); | ||
|  |   }; | ||
|  | 
 | ||
|  |   main(); | ||
|  | 
 | ||
|  | }()); |