/** * Created by Aleksey Chichenkov on 1/28/19. */ var js_beautify = require("js-beautify"); var args = require("args-parser")(process.argv); var fs = require("fs"); var exec = require('child_process').exec; var program_path = "./lemon-src/lemon-js"; var parser_path = "parsers/filters/"; var file_name = "parser.y"; var temp_file_name = "temp_parser.y"; var update_parser_y = function () { var source_parser_y = fs.readFileSync(parser_path + file_name, "utf8"); var result = /&&.*?REPLACER\{(.*?)\}&&/gm.exec(source_parser_y); if(result) { var file_path = result[1]; var process_code = fs.readFileSync(file_path, "utf8"); source_parser_y = source_parser_y.replace(/&&.*?REPLACER\{(.*?)\}&&/gm, process_code); fs.writeFileSync(parser_path + temp_file_name, source_parser_y); } }; var post_process_parser = function () { var out_js = fs.readFileSync(parser_path + "temp_parser.js", "utf8"); out_js = js_beautify(out_js, {indent_size: 4, space_in_empty_paren: true}); fs.writeFileSync(parser_path + "parser.js", out_js); var temp_parser_out = fs.readFileSync(parser_path + "temp_parser.out", "utf8"); fs.writeFileSync(parser_path + "parser.out", temp_parser_out); }; var start = function () { update_parser_y(); exec(program_path + " " + parser_path + temp_file_name + " -l", function(err, stdout, stderr) { err && console.log("ERROR: ", err); err && process.exit(1); post_process_parser(); fs.unlinkSync(parser_path + temp_file_name); fs.unlinkSync(parser_path + "temp_parser.js"); fs.unlinkSync(parser_path + "temp_parser.out"); }); }; start();