diff options
author | kpdecker <kpdecker@gmail.com> | 2013-08-17 12:41:04 -0500 |
---|---|---|
committer | kpdecker <kpdecker@gmail.com> | 2013-08-17 12:41:04 -0500 |
commit | 2f1a454467a3c0d0aae3d87a86535cea4a5c7da7 (patch) | |
tree | 98a7bb89d62ca138dea84bdcd17ec277c1b65c8d /tasks/parser.js | |
parent | b7c62d8cc525a2ae1105a4722c72d9e2f7d3d3ee (diff) | |
download | handlebars.js-2f1a454467a3c0d0aae3d87a86535cea4a5c7da7.zip handlebars.js-2f1a454467a3c0d0aae3d87a86535cea4a5c7da7.tar.gz handlebars.js-2f1a454467a3c0d0aae3d87a86535cea4a5c7da7.tar.bz2 |
Move parser generation into grunt file
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(); + }); + }); +}; |