alapa
Version:
A cutting-edge web development framework designed to revolutionize the way developers build modern web applications.
43 lines (42 loc) • 1.81 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.Include = void 0;
const utils_1 = require("../../utils");
const render_1 = require("../render");
const path_resolver_1 = require("../path-resolver");
const misc_1 = require("../regex/misc");
const utils_2 = require("../utils");
class Include {
static render(template, processedTemplates = new Set()) {
template = (0, utils_2.removeCommentsFromCode)(template);
template = template.replace(misc_1.codeRegex, (match) => {
match = match.replace(misc_1.includesRegex, (match, key, fileName) => {
// Check for circular includes
if (processedTemplates.has(fileName)) {
throw new Error(`Circular include detected: ${fileName}`);
}
// Add the current fileName to the Set
processedTemplates.add(fileName);
let content = "";
try {
content = render_1.TemplateEngine.getTemplate(path_resolver_1.PathResolver.resolve(fileName));
// eslint-disable-next-line @typescript-eslint/no-explicit-any
}
catch (e) {
if (key === "require") {
throw new Error(`Require Error ${e}`);
}
utils_1.Logger.warn(`Include Error: ${e}`);
}
content = this.render(content, processedTemplates);
// Remove the fileName from the Set after rendering
processedTemplates.delete(fileName);
const includes = `%} ${content} {%`;
return includes;
});
return match;
});
return template;
}
}
exports.Include = Include;
;