1#!/usr/bin/env node 2(function() { 3 4 var fs = require('fs'); 5 var path = require('path'); 6 var parse = require('../parser').parse; 7 var jsesc = require('jsesc'); 8 var regexes = process.argv.splice(2); 9 var first = regexes[0]; 10 var data; 11 var log = console.log; 12 var flags = ''; 13 var main = function() { 14 if (/^(?:-h|--help|undefined)$/.test(first)) { 15 log([ 16 '\nUsage:\n', 17 '\tregjsparser [regex ...]', 18 '\tregjsparser [-f | --flags] u [regex ...]', 19 '\tregjsparser [-v | --version]', 20 '\tregjsparser [-h | --help]', 21 '\nExamples:\n', 22 '\tregjsparser \'^foo.bar$\'', 23 '\tregjsparser \'[a-zA-Z0-9]\'' 24 ].join('\n')); 25 return process.exit(1); 26 } 27 28 if (/^(?:-v|--version)$/.test(first)) { 29 log('v%s', require(path.resolve(__dirname, '../package.json')).version); 30 return process.exit(1); 31 } 32 33 if (/^(?:-f|--flags)$/.test(first)) { 34 flags = regexes[1]; 35 regexes = regexes.slice(2); 36 } 37 38 regexes.forEach(function(snippet) { 39 try { 40 result = parse(snippet, flags); 41 log(jsesc(result, { 42 'json': true, 43 'compact': false, 44 'indent': '\t' 45 })); 46 } catch(error) { 47 log(error.message + '\n'); 48 log('Error: failed to parse. Make sure the regular expression is valid.'); 49 log('If you think this is a bug in regjsparser, please report it:'); 50 log('\thttps://github.com/jviereck/regjsparser/issues/new'); 51 log('\nStack trace:\n'); 52 log(error.stack); 53 return process.exit(1); 54 } 55 }); 56 // Return with exit status 0 outside of the `forEach` loop, in case 57 // multiple regular expressions were passed in. 58 return process.exit(0); 59 }; 60 61 main(); 62 63}()); 64