summaryrefslogtreecommitdiffstats
path: root/tasks/parser.js
diff options
context:
space:
mode:
authorkpdecker <kpdecker@gmail.com>2013-08-17 12:41:04 -0500
committerkpdecker <kpdecker@gmail.com>2013-08-17 12:41:04 -0500
commit2f1a454467a3c0d0aae3d87a86535cea4a5c7da7 (patch)
tree98a7bb89d62ca138dea84bdcd17ec277c1b65c8d /tasks/parser.js
parentb7c62d8cc525a2ae1105a4722c72d9e2f7d3d3ee (diff)
downloadhandlebars.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.js23
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();
+ });
+ });
+};