UNPKG

pk-template

Version:
159 lines 11.6 kB
"use strict"; var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; result["default"] = mod; return result; }; Object.defineProperty(exports, "__esModule", { value: true }); const lazy_1 = require("../lazy"); const vm = __importStar(require("vm")); const _1 = require("."); const _ = lazy_1.getUnderscore(); const compileCoffee = (data) => { try { return lazy_1.getCoffeeScript().compile(data, { bare: true }); } catch (e) { console.log('failed to compile coffee script'); throw e; } }; const compileLive = (data) => { try { const bin = lazy_1.getLiveScript().compile(data, { bare: true, map: 'embedded' }); return bin.code; } catch (e) { console.log('failed to compile live script'); throw e; } }; class CustomYamlTag { constructor(type, src, uri) { this.type = type; this.src = src; this.uri = uri; this.represent = () => this.src; this.evaluate = (scope, sandbox, evaluator) => { throw new Error('Custom Tag must implement evaluate() function'); }; this.isScript = () => false; } } exports.CustomYamlTag = CustomYamlTag; class CustomYamlScriptTag extends CustomYamlTag { constructor(tag, src, uri, compiler) { super(tag, src, uri); this.evaluate = (scope, sandbox, evaluator) => { try { const context = vm.createContext(sandbox); return this.script.runInContext(context, { lineOffset: 0, displayErrors: true, }); } catch (e) { e.source = this; e.sandbox = sandbox; throw e; } }; this.isScript = () => true; const compiled = compiler ? compiler(src) : src; this.script = new vm.Script(compiled); } } exports.CustomYamlScriptTag = CustomYamlScriptTag; class CustomYamlJsTag extends CustomYamlScriptTag { constructor(src, uri) { super('js', src, uri); } } exports.CustomYamlJsTag = CustomYamlJsTag; class CustomYamlCsTag extends CustomYamlScriptTag { constructor(src, uri) { super('cs', src, uri, compileCoffee); } } exports.CustomYamlCsTag = CustomYamlCsTag; class CustomYamlLsTag extends CustomYamlScriptTag { constructor(src, uri) { super('ls', src, uri, compileLive); } } exports.CustomYamlLsTag = CustomYamlLsTag; class CustomYamlTemplateTag extends CustomYamlTag { constructor(src, uri) { super('template', src, uri); this.evaluate = (scope, sandbox, evaluator) => { return this.tpl(sandbox); }; this.tpl = _.template(src); } } exports.CustomYamlTemplateTag = CustomYamlTemplateTag; class CustomYamlYamlTag extends CustomYamlTag { constructor(src, uri) { super('yaml', src, uri); this.evaluate = (scope, sandbox, evaluator) => { const text = this.tpl(sandbox); return _1.parseYaml(text); }; this.tpl = _.template(src); } } exports.CustomYamlYamlTag = CustomYamlYamlTag; class CustomYamlFileTag extends CustomYamlTag { constructor(src, uri) { super('file', src, uri); this.evaluate = (scope, sandbox, evaluator) => { const result = scope.loadText(this.src); return result.data; }; } } exports.CustomYamlFileTag = CustomYamlFileTag; class CustomYamlFlattenTag extends CustomYamlTag { constructor(src, uri) { super('flatten', src, uri); this.evaluate = (scope, sandbox, evaluator) => { const list = []; const flattenDeep = (o) => { if (o instanceof CustomYamlTag) { o = o.evaluate(scope, sandbox, evaluator); } if (Array.isArray(o)) { o.forEach(e => flattenDeep(e)); } else { list.push(o); } }; flattenDeep(this.src); return list; }; } } exports.CustomYamlFlattenTag = CustomYamlFlattenTag; class CustomYamlTagTag extends CustomYamlTag { constructor(code, src, uri) { super('tag', src, uri); } execute(scope, sandbox, evaluator) { } convert() { const [tag, src] = this.src.split(' ', 2); switch (tag) { case '!js': return new CustomYamlJsTag(src, this.uri); case '!ls': return new CustomYamlLsTag(src, this.uri); case '!cs': return new CustomYamlCsTag(src, this.uri); case '!template': return new CustomYamlTemplateTag(src, this.uri); case '!yaml': return new CustomYamlYamlTag(src, this.uri); case '!file': return new CustomYamlFileTag(src, this.uri); case '!flatten': return new CustomYamlFlattenTag(src, this.uri); } } } exports.CustomYamlTagTag = CustomYamlTagTag; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tVGFncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9way15YW1sL2N1c3RvbVRhZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsa0NBQXdFO0FBRXhFLHVDQUF5QjtBQUV6Qix3QkFBNEM7QUFDNUMsTUFBTSxDQUFDLEdBQUcsb0JBQWEsRUFBRSxDQUFDO0FBRTFCLE1BQU0sYUFBYSxHQUFHLENBQUMsSUFBWSxFQUFVLEVBQUU7SUFDN0MsSUFBSTtRQUNGLE9BQU8sc0JBQWUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztLQUN4RDtJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1FBQy9DLE1BQU0sQ0FBQyxDQUFDO0tBQ1Q7QUFDSCxDQUFDLENBQUE7QUFFRCxNQUFNLFdBQVcsR0FBRyxDQUFDLElBQVksRUFBVSxFQUFFO0lBQzNDLElBQUk7UUFDRixNQUFNLEdBQUcsR0FBRyxvQkFBYSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDM0UsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDO0tBRWpCO0lBQUMsT0FBTyxDQUFDLEVBQUU7UUFDVixPQUFPLENBQUMsR0FBRyxDQUFDLCtCQUErQixDQUFDLENBQUM7UUFDN0MsTUFBTSxDQUFDLENBQUM7S0FDVDtBQUNILENBQUMsQ0FBQTtBQUVELE1BQWEsYUFBYTtJQUN4QixZQUFtQixJQUFZLEVBQVMsR0FBUSxFQUFTLEdBQVc7UUFBakQsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUFTLFFBQUcsR0FBSCxHQUFHLENBQUs7UUFBUyxRQUFHLEdBQUgsR0FBRyxDQUFRO1FBQ3BFLGNBQVMsR0FBRyxHQUFHLEVB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