|  | @@ -0,0 +1,27 @@
 | 
	
		
			
				|  |  | +module.exports = function(grunt) {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  var PEG = require('pegjs');
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  /**
 | 
	
		
			
				|  |  | +     Full config looks like this:
 | 
	
		
			
				|  |  | +    pegjs: {
 | 
	
		
			
				|  |  | +       my_parser: {
 | 
	
		
			
				|  |  | +         src: 'parser.pegjs',        // REQUIRED
 | 
	
		
			
				|  |  | +         dest: 'parser.js',          // REQUIRED
 | 
	
		
			
				|  |  | +         trackLineAndColumn: true,      // optional (default: false)
 | 
	
		
			
				|  |  | +         cache: true,                   // optional (default: false)
 | 
	
		
			
				|  |  | +         export_var: 'smalltalk.parser' // optional (default: module.exports)
 | 
	
		
			
				|  |  | +       }
 | 
	
		
			
				|  |  | +     },
 | 
	
		
			
				|  |  | +   */
 | 
	
		
			
				|  |  | +  grunt.registerMultiTask('pegjs', 'Generate JavaScript parser from PEG.js grammar description', function() {
 | 
	
		
			
				|  |  | +    var pegOptions = {
 | 
	
		
			
				|  |  | +      cache: this.data.cache || false,
 | 
	
		
			
				|  |  | +      trackLineAndColumn: this.data.trackLineAndColumn || false
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +    var export_var = this.data.export_var || 'module.exports';
 | 
	
		
			
				|  |  | +    var parser = PEG.buildParser(grunt.file.read(this.data.src), pegOptions);
 | 
	
		
			
				|  |  | +    var content = export_var + ' = ' + parser.toSource() + ';\n';
 | 
	
		
			
				|  |  | +    grunt.file.write(this.data.dest, content);
 | 
	
		
			
				|  |  | +  });
 | 
	
		
			
				|  |  | +};
 |