UNPKG

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
"use strict"; 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;