@pubgcorp/pk-template
Version:
p template engine for kubernetes
100 lines • 7.44 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.StyleSheet = void 0;
const common_1 = require("../../common");
const styleApply_1 = require("./styleApply");
const styleCompile_1 = require("./styleCompile");
const customTags_1 = require("../../pk-yaml/customTags");
class StyleSheet {
constructor(parent) {
this.parent = parent;
this.styleSheets = {};
}
loadStyles(styles) {
for (const map of styles) {
for (const key of Object.keys(map)) {
const code = map[key];
if (code instanceof customTags_1.CustomYamlTag) {
this.styleSheets[key] = new styleApply_1.StyleApply(key, code);
}
else {
throw new Error(`invalid style definition ${key}`);
}
}
}
}
import(scope, rpath) {
const { uri, data } = scope.loadPkt(rpath);
scope.child2({ uri }, cscope => {
this.load(cscope, data.header);
});
}
load(scope, pkt) {
if (pkt['/import']) {
if (Array.isArray(pkt['/import'])) {
for (let path of pkt['/import']) {
this.import(scope, path);
}
}
else {
this.import(scope, pkt['/import']);
}
}
if (pkt['/style']) {
this.loadStyles(pkt['/style']);
}
}
applyStyle(vm, scope, object, node, style) {
const styleApply = this.styleSheets[style.type];
return styleApply
? styleApply.applyStyle(vm, scope, object, node, style)
: (this.parent
? this.parent.applyStyle(vm, scope, object, node, style)
: false);
}
applyTree(vm, scope, object) {
let updated = false;
let left = null;
(0, common_1.forEachTreeObjectKey)(object, (node, key, styles) => {
if (key === '^') {
if (styles.length === 0) {
delete node[key];
return;
}
const leftOvers = [];
for (const style of styles) {
const applied = this.applyStyle(vm, scope, object, node, style);
if (applied) {
updated = true;
}
else {
leftOvers.push(style);
left = style;
}
}
if (leftOvers.length == 0) {
delete node[key];
}
else {
node[key] = leftOvers;
}
}
});
if (!updated && left != null) {
throw new Error(`cannot apply style ${left.type}`);
}
return left != null;
}
apply(vm, scope, object) {
(0, styleCompile_1.compileStyle)(vm, scope, object);
while (this.applyTree(vm, scope, object))
;
}
static Build(scope, pkt) {
const styleSheet = new StyleSheet(scope.parent.styleSheet);
styleSheet.load(scope, pkt);
return styleSheet;
}
}
exports.StyleSheet = StyleSheet;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGVTaGVldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9way10ZW1wbGF0ZS9zdHlsZXMvc3R5bGVTaGVldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5Q0FBNkQ7QUFFN0QsNkNBQTBDO0FBQzFDLGlEQUE4QztBQUM5Qyx5REFBeUQ7QUFHekQsTUFBYSxVQUFVO0lBR3JCLFlBQW9CLE1BQTBCO1FBQTFCLFdBQU0sR0FBTixNQUFNLENBQW9CO1FBQzVDLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFTyxVQUFVLENBQUMsTUFBZ0I7UUFDakMsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLEVBQUU7WUFDeEIsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNsQyxNQUFNLElBQUksR0FBSSxHQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQy9CLElBQUksSUFBSSxZQUFZLDBCQUFhLEVBQUU7b0JBQ2pDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSx1QkFBVSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztpQkFDbkQ7cUJBQU07b0JBQ0wsTUFBTSxJQUFJLEtBQUssQ0FBQyw0QkFBNEIsR0FBRyxFQUFFLENBQUMsQ0FBQTtpQkFDbkQ7YUFDRjtTQUNGO0lBQ0gsQ0FBQztJQUVPLE1BQU0sQ0FBQyxLQUFhLEVBQUUsS0FBYTtRQUN6QyxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0MsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFO1lBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztR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