80 lines
8.1 KiB
JavaScript
80 lines
8.1 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.register = void 0;
|
|
const path = require("path");
|
|
const liquid_1 = require("../liquidjs/liquid");
|
|
const _1 = require("./");
|
|
const render_1 = require("../liquidjs/builtin/tags/render");
|
|
const block_mode_1 = require("../liquidjs/context/block-mode");
|
|
const filters_1 = require("../filters");
|
|
const underscore_1 = require("../liquid/underscore");
|
|
const osr_commons_1 = require("@plastichub/osr-commons");
|
|
const register = (engine) => {
|
|
engine.registerTag('include', {
|
|
parseFilePath: render_1.parseFilePath,
|
|
renderFilePath: render_1.renderFilePath,
|
|
parse: function (token) {
|
|
const args = token.args;
|
|
const tokenizer = new liquid_1.Tokenizer(args, this.liquid.options.operatorsTrie);
|
|
this['file'] = this.parseFilePath(tokenizer, this.liquid);
|
|
this['currentFile'] = token.file;
|
|
const begin = tokenizer.p;
|
|
const withStr = tokenizer.readIdentifier();
|
|
if (withStr.content === 'with') {
|
|
tokenizer.skipBlank();
|
|
if (tokenizer.peek() !== ':') {
|
|
this.withVar = tokenizer.readValue();
|
|
}
|
|
else
|
|
tokenizer.p = begin;
|
|
}
|
|
else
|
|
tokenizer.p = begin;
|
|
this.hash = new liquid_1.Hash(tokenizer.remaining(), this.liquid.options.jekyllInclude);
|
|
},
|
|
render: function* (ctx, emitter) {
|
|
const enabled = yield* (0, _1.arg)(this.hash.hash, 'enabled', ctx, true);
|
|
if (!enabled)
|
|
return;
|
|
const { liquid, hash, withVar } = this;
|
|
const { renderer } = liquid;
|
|
let filepath = yield this.renderFilePath(this['file'], ctx, liquid);
|
|
if ((0, underscore_1.isString)(filepath)) {
|
|
filepath = liquid.owner.options.resolve(filepath);
|
|
}
|
|
(0, liquid_1.assert)(filepath, () => `illegal filename "${filepath}"`);
|
|
const assign = yield* (0, _1.arg)(this.hash.hash, 'assign', ctx);
|
|
//const before = yield* arg(this.hash.hash, 'before', ctx)
|
|
const after = yield* (0, _1.arg)(this.hash.hash, 'after', ctx);
|
|
const saved = ctx.saveRegister('blocks', 'blockMode');
|
|
ctx.setRegister('blocks', {});
|
|
ctx.setRegister('blockMode', block_mode_1.default.OUTPUT);
|
|
const scope = yield hash.render(ctx);
|
|
if (withVar)
|
|
scope[filepath] = (0, liquid_1.evalToken)(withVar, ctx);
|
|
const templates = yield liquid._parsePartialFile(filepath, ctx.sync, this['currentFile']);
|
|
ctx.push(ctx.opts.jekyllInclude ? { include: scope } : scope);
|
|
let output = '';
|
|
const emitter2 = {
|
|
buffer: emitter.buffer,
|
|
write: function (html) {
|
|
this.buffer += html;
|
|
output += html;
|
|
}
|
|
};
|
|
yield renderer.renderTemplates(templates, ctx, emitter2);
|
|
ctx.pop();
|
|
ctx.restoreRegister(saved);
|
|
const rel = path.relative(liquid.owner.options.cwd, this.currentFile).replace('.tmp', '');
|
|
liquid.owner.stats.imports.push({ file: filepath, parent: (0, osr_commons_1.forward_slash)(rel) });
|
|
output = yield (0, filters_1.applyFilters)(output, after || '', (0, filters_1.Filters)(liquid.owner.options));
|
|
if (assign) {
|
|
ctx.bottom()[assign] = output;
|
|
return;
|
|
}
|
|
return output;
|
|
}
|
|
});
|
|
};
|
|
exports.register = register;
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWluY2x1ZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcGx1Z2lucy9taW5jbHVkZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2QkFBNEI7QUFDNUIsK0NBQW1HO0FBQ25HLHlCQUF3QjtBQUN4Qiw0REFBK0U7QUFDL0UsK0RBQXNEO0FBQ3RELHdDQUFrRDtBQUNsRCxxREFBK0M7QUFDL0MseURBQXVEO0FBRWhELE1BQU0sUUFBUSxHQUFHLENBQUMsTUFBTSxFQUFFLEVBQUU7SUFDakMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUU7UUFDNUIsYUFBYSxFQUFiLHNCQUFhO1FBQ2IsY0FBYyxFQUFkLHVCQUFjO1FBQ2QsS0FBSyxFQUFFLFVBQVUsS0FBZTtZQUM5QixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFBO1lBQ3ZCLE1BQU0sU0FBUyxHQUFHLElBQUksa0JBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUE7WUFDeEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtZQUN6RCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQTtZQUNoQyxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFBO1lBQ3pCLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxjQUFjLEVBQUUsQ0FBQTtZQUMxQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLEtBQUssTUFBTSxFQUFFO2dCQUM5QixTQUFTLENBQUMsU0FBUyxFQUFFLENBQUE7Z0JBQ3JCLElBQUksU0FBUyxDQUFDLElBQUksRUFBRSxLQUFLLEdBQUcsRUFBRTtvQkFDNUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUMsU0FBUyxFQUFFLENBQUE7aUJBQ3JD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
|