2025-05-12 05:38:44 +09:00

40 lines
1.3 KiB
JavaScript

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const promise_1 = __importDefault(require("../utils/promise"));
const error_1 = __importDefault(require("../utils/error"));
const render_1 = __importDefault(require("./render"));
/**
* Render a template
*
* @param {TemplateEngine} engine
* @param {string} filePath
* @param {Object} context
* @return {Promise<TemplateOutput>}
*/
function renderTemplateFile(engine, filePath, context) {
const loader = engine.getLoader();
// Resolve the filePath
const resolvedFilePath = loader.resolve(null, filePath);
return (0, promise_1.default)()
.then(() => {
if (!loader.async) {
return loader.getSource(resolvedFilePath);
}
const deferred = promise_1.default.defer();
loader.getSource(resolvedFilePath, deferred.makeNodeResolver());
return deferred.promise;
})
.then((result) => {
if (!result) {
throw error_1.default.TemplateError(new Error("Not found"), {
filename: filePath
});
}
return (0, render_1.default)(engine, result.path, result.src, context);
});
}
exports.default = renderTemplateFile;