diff options
Diffstat (limited to 'tasks/parser.js')
-rw-r--r-- | tasks/parser.js | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/tasks/parser.js b/tasks/parser.js new file mode 100644 index 0000000..f6a72c6 --- /dev/null +++ b/tasks/parser.js @@ -0,0 +1,23 @@ +var childProcess = require('child_process'); + +module.exports = function(grunt) { + grunt.registerTask('parser', 'Generate jison parser.', function() { + var done = this.async(); + + var child = childProcess.spawn('./node_modules/.bin/jison', ['-m', 'js', 'src/handlebars.yy', 'src/handlebars.l'], {stdio: 'inherit'}); + child.on('exit', function(code) { + if (code != 0) { + grunt.fatal('Jison failure: ' + code); + done(); + return; + } + + var src = ['src/parser-prefix.js', 'handlebars.js', 'src/parser-suffix.js'].map(grunt.file.read).join(''); + grunt.file.delete('handlebars.js'); + + grunt.file.write('lib/handlebars/compiler/parser.js', src); + grunt.log.writeln('Parser "lib/handlebars/compiler/parser.js" created.'); + done(); + }); + }); +}; |