LemonJS/main.js

54 lines
1.7 KiB
JavaScript

/**
* Created by Aleksey Chichenkov <a.chichenkov@initi.ru> 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();