meblog
Version:
A simple blog engine for personal blogging
58 lines (57 loc) • 2.23 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const ConfigHolder_1 = tslib_1.__importDefault(require("../ConfigHolder"));
const gulplog_1 = tslib_1.__importDefault(require("gulplog"));
const PageTemplate_1 = tslib_1.__importDefault(require("../template/PageTemplate"));
const PostTemplate_1 = tslib_1.__importDefault(require("../template/PostTemplate"));
const TagTemplate_1 = tslib_1.__importDefault(require("../template/TagTemplate"));
const GulpUtils_1 = tslib_1.__importDefault(require("../util/GulpUtils"));
class TemplateRenderer extends ConfigHolder_1.default {
dataSource;
constructor(dataSource) {
super(dataSource.config);
this.dataSource = dataSource;
}
render(Template, locale) {
const dataSource = this.dataSource;
return GulpUtils_1.default.through(function (file, enc, cb) {
file.locale = locale;
const template = new Template(dataSource, file);
gulplog_1.default.debug('Render template', template.templateName);
try {
const files = template.render();
files.forEach((file) => this.push(file));
cb();
}
catch (e) {
cb(GulpUtils_1.default.error(e));
}
});
}
renderTags(locale) {
return this.render(TagTemplate_1.default, locale);
}
renderPosts(locale) {
return this.render(PostTemplate_1.default, locale);
}
renderPages(locale) {
return this.render(PageTemplate_1.default, locale);
}
renderSpecifiedPosts(posts) {
const dataSource = this.dataSource;
return GulpUtils_1.default.through(function (file, enc, cb) {
const template = new PostTemplate_1.default(dataSource, file);
gulplog_1.default.debug('Render template', template.templateName);
try {
const files = template.renderPosts(posts);
files.forEach((file) => this.push(file));
cb();
}
catch (e) {
cb(GulpUtils_1.default.error(e));
}
});
}
}
exports.default = TemplateRenderer;