64 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| #!/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();
 | |
| 
 | |
| }());
 |