twing
Version:
First-class Twig engine for Node.js
39 lines (38 loc) • 1.46 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.templateFromStringSynchronously = exports.templateFromString = void 0;
const template_1 = require("../../../template");
const createHash = require("create-hash");
const source_1 = require("../../../source");
const getAST = (executionContext, code, name) => {
const { environment } = executionContext;
const hash = createHash("sha256").update(code).digest("hex").toString();
if (name !== null) {
name = `${name} (string template ${hash})`;
}
else {
name = `__string_template__${hash}`;
}
return environment.parse(environment.tokenize((0, source_1.createSource)(name, code)));
};
/**
* Loads a template from a string.
*
* <pre>
* {{ include(template_from_string("Hello {{ name }}")) }}
* </pre>
*
* @param executionContext
* @param code
* @param name An optional name for the template to be used in error messages
*/
const templateFromString = (executionContext, code, name) => {
const ast = getAST(executionContext, code, name);
return Promise.resolve((0, template_1.createTemplate)(ast));
};
exports.templateFromString = templateFromString;
const templateFromStringSynchronously = (executionContext, code, name) => {
const ast = getAST(executionContext, code, name);
return (0, template_1.createSynchronousTemplate)(ast);
};
exports.templateFromStringSynchronously = templateFromStringSynchronously;