jsoniq
Version:
JSONiq implementation for JavaScript
34 lines (32 loc) • 3.81 kB
JavaScript
/// <reference path="../../typings/tsd.d.ts" />
;
class DynamicContext {
constructor(parent) {
this.variables = {};
this.parent = parent;
}
getParent() {
return this.parent;
}
createContext() {
return new DynamicContext(this);
}
setVariable(ns, varName, value) {
this.variables[ns + "#" + varName] = value;
return this;
}
getVariable(ns, varName) {
var lookup = this.variables[ns + "#" + varName];
if (lookup) {
return lookup;
}
else if (this.parent) {
return this.parent.getVariable(ns, varName);
}
else {
return undefined;
}
}
}
exports.default = DynamicContext;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9ydW50aW1lL0R5bmFtaWNDb250ZXh0LnRzIl0sIm5hbWVzIjpbIkR5bmFtaWNDb250ZXh0IiwiRHluYW1pY0NvbnRleHQuY29uc3RydWN0b3IiLCJEeW5hbWljQ29udGV4dC5nZXRQYXJlbnQiLCJEeW5hbWljQ29udGV4dC5jcmVhdGVDb250ZXh0IiwiRHluYW1pY0NvbnRleHQuc2V0VmFyaWFibGUiLCJEeW5hbWljQ29udGV4dC5nZXRWYXJpYWJsZSJdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDOztBQUkvQztJQUtJQSxZQUFZQSxNQUF1QkE7UUFGM0JDLGNBQVNBLEdBQWtDQSxFQUFFQSxDQUFDQTtRQUdsREEsSUFBSUEsQ0FBQ0EsTUFBTUEsR0FBR0EsTUFBTUEsQ0FBQ0E7SUFDekJBLENBQUNBO0lBRURELFNBQVNBO1FBQ0xFLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLE1BQU1BLENBQUNBO0lBQ3ZCQSxDQUFDQTtJQUVERixhQUFhQTtRQUNURyxNQUFNQSxDQUFDQSxJQUFJQSxjQUFjQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQTtJQUNwQ0EsQ0FBQ0E7SUFFREgsV0FBV0EsQ0FBQ0EsRUFBVUEsRUFBRUEsT0FBZUEsRUFBRUEsS0FBZUE7UUFDcERJLElBQUlBLENBQUNBLFNBQVNBLENBQUNBLEVBQUVBLEdBQUdBLEdBQUdBLEdBQUdBLE9BQU9BLENBQUNBLEdBQUdBLEtBQUtBLENBQUNBO1FBQzNDQSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQTtJQUNoQkEsQ0FBQ0E7SUFFREosV0FBV0EsQ0FBQ0EsRUFBVUEsRUFBRUEsT0FBZUE7UUFDbkNLLElBQUlBLE1BQU1BLEdBQUdBLElBQUlBLENBQUNBLFNBQVNBLENBQUNBLEVBQUVBLEdBQUdBLEdBQUdBLEdBQUdBLE9BQU9BLENBQUNBLENBQUNBO1FBQ2hEQSxFQUFFQSxDQUFBQSxDQUFDQSxNQUFNQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUNSQSxNQUFNQSxDQUFDQSxNQUFNQSxDQUFDQTtRQUNsQkEsQ0FBQ0E7UUFBQ0EsSUFBSUEsQ0FBQ0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsTUFBTUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDckJBLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLE1BQU1BLENBQUNBLFdBQVdBLENBQUNBLEVBQUVBLEVBQUVBLE9BQU9BLENBQUNBLENBQUNBO1FBQ2hEQSxDQUFDQTtRQUFDQSxJQUFJQSxDQUFDQSxDQUFDQTtZQUNKQSxNQUFNQSxDQUFDQSxTQUFTQSxDQUFDQTtRQUNyQkEsQ0FBQ0E7SUFDTEEsQ0FBQ0E7QUFDTEwsQ0FBQ0E7aUNBQUEiLCJmaWxlIjoibGliL3J1bnRpbWUvRHluYW1pY0NvbnRleHQuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vLi4vdHlwaW5ncy90c2QuZC50c1wiIC8+XG5cbmltcG9ydCBJdGVyYXRvciBmcm9tIFwiLi9pdGVyYXRvcnMvSXRlcmF0b3JcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRHluYW1pY0NvbnRleHQge1xuXG4gICAgcHJpdmF0ZSBwYXJlbnQ6IER5bmFtaWNDb250ZXh0O1xuICAgIHByaXZhdGUgdmFyaWFibGVzOiB7IFtpbmRleDogc3RyaW5nXTogSXRlcmF0b3IgfSA9IHt9O1xuXG4gICAgY29uc3RydWN0b3IocGFyZW50PzogRHluYW1pY0NvbnRleHQpIHtcbiAgICAgICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgfVxuXG4gICAgZ2V0UGFyZW50KCk6IER5bmFtaWNDb250ZXh0IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyZW50O1xuICAgIH1cblxuICAgIGNyZWF0ZUNvbnRleHQoKTogRHluYW1pY0NvbnRleHQge1xuICAgICAgICByZXR1cm4gbmV3IER5bmFtaWNDb250ZXh0KHRoaXMpO1xuICAgIH1cblxuICAgIHNldFZhcmlhYmxlKG5zOiBzdHJpbmcsIHZhck5hbWU6IHN0cmluZywgdmFsdWU6IEl0ZXJhdG9yKTogRHluYW1pY0NvbnRleHQge1xuICAgICAgICB0aGlzLnZhcmlhYmxlc1tucyArIFwiI1wiICsgdmFyTmFtZV0gPSB2YWx1ZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgZ2V0VmFyaWFibGUobnM6IHN0cmluZywgdmFyTmFtZTogc3RyaW5nKTogSXRlcmF0b3Ige1xuICAgICAgICB2YXIgbG9va3VwID0gdGhpcy52YXJpYWJsZXNbbnMgKyBcIiNcIiArIHZhck5hbWVdO1xuICAgICAgICBpZihsb29rdXApIHtcbiAgICAgICAgICAgIHJldHVybiBsb29rdXA7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5wYXJlbnQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcmVudC5nZXRWYXJpYWJsZShucywgdmFyTmFtZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9