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();
							 | 
						|
								
							 | 
						|
								}());
							 |