mono/packages/osrl/plugins/minclude.js
2025-12-30 16:33:03 +01:00

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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