You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
1.7 KiB
63 lines
1.7 KiB
#!/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(); |
|
|
|
}());
|
|
|