/**
* Universidad de La Laguna
* Escuela Superior de Ingeniería y Tecnología
* Grado en Ingeniería Informática
* Procesadores de Lenguajes
*
* @author Juan Rodríguez Suárez
* @since Mar 04 2024
* @desc Contains a function to generate the JavaScript code from the AST.
*/
const recast = require("recast");
const { renderFile } = require('template-file');
/**
* @brief Generates the JavaScript code from the AST
* @param {object} ast - The AST
* @returns {string} The JavaScript code
*/
async function codeGen(ast) {
let code = recast.print(ast.ast).code;
const USED_FUNCTIONS = Array.from(ast.dependencies);
const ROOT = __dirname.replace(/\\/g, '/');
code = await renderFile(`${ROOT}/template.js`, { USED_FUNCTIONS, ROOT, code });
return code;
}
module.exports = codeGen;