30 lines
917 B
JavaScript
30 lines
917 B
JavaScript
var childProcess = require('child_process');
|
|
|
|
module.exports = function(grunt) {
|
|
grunt.registerTask('parser', 'Generate jison parser.', function() {
|
|
var done = this.async();
|
|
|
|
var cmd = './node_modules/.bin/jison';
|
|
|
|
if (process.platform === 'win32') {
|
|
cmd = 'node_modules\\.bin\\jison.cmd';
|
|
}
|
|
|
|
var child = childProcess.spawn(cmd, ['-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();
|
|
});
|
|
});
|
|
};
|