浏览代码

grunt: add MultiTask for generating PEG parsers

Manfred Kroehnert 11 年之前
父节点
当前提交
d2d04aaa22
共有 1 个文件被更改,包括 12 次插入0 次删除
  1. 12 0
      grunt.js

+ 12 - 0
grunt.js

@@ -165,4 +165,16 @@ module.exports = function(grunt) {
 
     grunt.log.writeln('File "' + this.data.dest + '" created.');
   });
+
+  grunt.registerMultiTask('pegjs', 'Generate JavaScript parser from PEG.js description', function() {
+    var PEG = require('pegjs');
+    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);
+  });
 };