@sedeh/extensible-json-transformations
Version:
Have you ever wanted to perform query on a JSON? Have you ever wanted to consume it in a program but the JSON was in a form not suitable for your program? Have you wanted to use the JSON without writing any code to do it? Have you wondered what it takes
36 lines • 6.17 kB
JavaScript
import { Inquirer } from './inquirer';
export class Styler {
constructor(transformations) {
this.inquirer = new Inquirer();
this.transformations = transformations;
this.inquirer.initTemplates(this.transformations.templates);
}
changeRootNode(node) {
this.inquirer.setRootNode(node);
}
transform() {
let result = [];
const template = this.inquirer.templateForName(this.transformations.rootTemplate);
if (template) {
const attrs = Object.keys(template.style);
const nodeList = this.inquirer.templateNodes(template, this.inquirer.nodeList(null));
for (let i = 0; i < nodeList.length; i++) {
const currentNode = nodeList[i];
const resultingNode = {};
for (let j = 0; j < attrs.length; j++) {
const attr = attrs[j];
resultingNode[attr] = this.inquirer.invoke(template.style[attr], currentNode);
}
;
result.push(resultingNode);
}
;
}
if (this.transformations.onResult && this.transformations.onResult.length) {
const functions = this.inquirer.toQueryOperation(this.transformations.onResult);
result = this.inquirer.invoke(functions, result);
}
return result;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmb3JtYXRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh0ZW5zaWJsZS1qc29uLXRyYW5zZm9ybWF0aW9ucy9zcmMvbGliL3NoYXJlZC90cmFuc2Zvcm1hdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFVLFFBQVEsRUFBWSxNQUFNLFlBQVksQ0FBQztBQWN4RCxNQUFNLE9BQU8sTUFBTTtJQUtmLFlBQVksZUFBK0I7UUFDdkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxlQUFlLEdBQUcsZUFBZSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVNLGNBQWMsQ0FBQyxJQUFRO1FBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFTSxTQUFTO1FBQ1osSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLE1BQU0sUUFBUSxHQUFZLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFM0YsSUFBSSxRQUFRLEVBQUU7WUFDVixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUVyRixLQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDckMsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNoQyxNQUFNLGFBQWEsR0FBUSxFQUFFLENBQUM7Z0JBQzlCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO29CQUNuQyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3RCLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDO2lCQUNqRjtnQkFBQSxDQUFDO2dCQUNGLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7YUFDOUI7WUFBQSxDQUFDO1NBQ0w7UUFDRCxJQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRTtZQUN0RSxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDaEYsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztTQUNwRDtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEpYUGF0aCwgSW5xdWlyZXIsIFRlbXBsYXRlIH0gZnJvbSAnLi9pbnF1aXJlcic7XHJcblxyXG4vKlxyXG4gKiB0b29sIHRvIGRpc3BsYXkgcmVzdWx0IG9mIGEgc2VhcmNoIG9uIHNldCBvZiBwb2ludHMgb2YgaW50ZXJlc3RzIG9uIG9iamVjdHMuXHJcbiAqL1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2Zvcm1hdGlvbnMge1xyXG4gICAgbmFtZTogc3RyaW5nLFxyXG4gICAgaW1wb3J0VXJscz86c3RyaW5nW10sXHJcbiAgICByb290VGVtcGxhdGU6IHN0cmluZyxcclxuICAgIG9uUmVzdWx0Pzogc3RyaW5nLFxyXG4gICAgdGVtcGxhdGVzOiBUZW1wbGF0ZVtdXHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBTdHlsZXIgIHtcclxuXHJcbiAgICBwcml2YXRlIHRyYW5zZm9ybWF0aW9uczogVHJhbnNmb3JtYXRpb25zO1xyXG4gICAgcHJpdmF0ZSBpbnF1aXJlcjpJbnF1aXJlcjtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcih0cmFuc2Zvcm1hdGlvbnM6VHJhbnNmb3JtYXRpb25zKSB7XHJcbiAgICAgICAgdGhpcy5pbnF1aXJlciA9IG5ldyBJbnF1aXJlcigpO1xyXG4gICAgICAgIHRoaXMudHJhbnNmb3JtYXRpb25zID0gdHJhbnNmb3JtYXRpb25zO1xyXG4gICAgICAgIHRoaXMuaW5xdWlyZXIuaW5pdFRlbXBsYXRlcyh0aGlzLnRyYW5zZm9ybWF0aW9ucy50ZW1wbGF0ZXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBjaGFuZ2VSb290Tm9kZShub2RlOmFueSkge1xyXG4gICAgICAgIHRoaXMuaW5xdWlyZXIuc2V0Um9vdE5vZGUobm9kZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHRyYW5zZm9ybSgpIHtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gW107XHJcbiAgICAgICAgY29uc3QgdGVtcGxhdGU6VGVtcGxhdGUgPSB0aGlzLmlucXVpcmVyLnRlbXBsYXRlRm9yTmFtZSh0aGlzLnRyYW5zZm9ybWF0aW9ucy5yb290VGVtcGxhdGUpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmICh0ZW1wbGF0ZSkge1xyXG4gICAgICAgICAgICBjb25zdCBhdHRycyA9IE9iamVjdC5rZXlzKHRlbXBsYXRlLnN0eWxlKTtcclxuICAgICAgICAgICAgY29uc3Qgbm9kZUxpc3QgPSB0aGlzLmlucXVpcmVyLnRlbXBsYXRlTm9kZXModGVtcGxhdGUsIHRoaXMuaW5xdWlyZXIubm9kZUxpc3QobnVsbCkpO1xyXG4gICAgXHJcbiAgICAgICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCBub2RlTGlzdC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudE5vZGUgPSBub2RlTGlzdFtpXTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdGluZ05vZGU6IGFueSA9IHt9O1xyXG4gICAgICAgICAgICAgICAgZm9yKCBsZXQgaiA9IDA7IGogPCBhdHRycy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGF0dHIgPSBhdHRyc1tqXTtcclxuICAgICAgICAgICAgICAgICAgICByZXN1bHRpbmdOb2RlW2F0dHJdID0gdGhpcy5pbnF1aXJlci5pbnZva2UodGVtcGxhdGUuc3R5bGVbYXR0cl0sIGN1cnJlbnROb2RlKTtcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChyZXN1bHRpbmdOb2RlKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYodGhpcy50cmFuc2Zvcm1hdGlvbnMub25SZXN1bHQgJiYgdGhpcy50cmFuc2Zvcm1hdGlvbnMub25SZXN1bHQubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZ1bmN0aW9ucyA9IHRoaXMuaW5xdWlyZXIudG9RdWVyeU9wZXJhdGlvbih0aGlzLnRyYW5zZm9ybWF0aW9ucy5vblJlc3VsdCk7XHJcbiAgICAgICAgICAgIHJlc3VsdCA9IHRoaXMuaW5xdWlyZXIuaW52b2tlKGZ1bmN0aW9ucywgcmVzdWx0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxufVxyXG4iXX0=