UNPKG

jsoniq

Version:

JSONiq implementation for JavaScript

74 lines (72 loc) 10.1 kB
"use strict"; /// <reference path="../../typings/tsd.d.ts" /> var _ = require("lodash"); var QName_1 = require("./QName"); class StaticContext { constructor(parent, position) { this.namespaces = []; this.variables = []; this.varRefs = []; this.parent = parent; this.position = position; } createContext(pos) { return new StaticContext(this, pos); } getPosition() { return this.position; } setPosition(position) { this.position = position; return this; } getParent() { return this.parent; } addNamespace(prefix, uri) { this.namespaces.push(new QName_1.default(prefix, uri, "")); return this; } getNamespaceByPrefix(prefix) { var qname = _.find(this.namespaces, { prefix: prefix }); if (!qname && this.parent) { return this.parent.getNamespaceByPrefix(prefix); } return qname; } addVariable(v) { this.variables.push(v); return this; } getVariable(variable) { var found = _.find(this.variables, function (v) { return v.toString() === variable.toString(); }); if (found) { return found; } else if (this.parent) { return this.parent.getVariable(variable); } } getUnusedVarRefs() { return this.varRefs.filter(varRef => { return this.variables.filter(v => { return v.getPrefix() === varRef.getPrefix() && v.getLocalName() === varRef.getLocalName(); }).length === 0; }); } getUnusedVariables() { return this.variables.filter(v => { return this.varRefs.filter(varRef => { return v.getPrefix() === varRef.getPrefix() && v.getLocalName() === varRef.getLocalName(); }).length === 0; }); } addVarRefs(qnames) { this.varRefs = this.varRefs.concat(qnames); return this; } addVarRef(qname) { this.varRefs.push(qname); return this; } } exports.default = StaticContext; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlci9TdGF0aWNDb250ZXh0LnRzIl0sIm5hbWVzIjpbIlN0YXRpY0NvbnRleHQiLCJTdGF0aWNDb250ZXh0LmNvbnN0cnVjdG9yIiwiU3RhdGljQ29udGV4dC5jcmVhdGVDb250ZXh0IiwiU3RhdGljQ29udGV4dC5nZXRQb3NpdGlvbiIsIlN0YXRpY0NvbnRleHQuc2V0UG9zaXRpb24iLCJTdGF0aWNDb250ZXh0LmdldFBhcmVudCIsIlN0YXRpY0NvbnRleHQuYWRkTmFtZXNwYWNlIiwiU3RhdGljQ29udGV4dC5nZXROYW1lc3BhY2VCeVByZWZpeCIsIlN0YXRpY0NvbnRleHQuYWRkVmFyaWFibGUiLCJTdGF0aWNDb250ZXh0LmdldFZhcmlhYmxlIiwiU3RhdGljQ29udGV4dC5nZXRVbnVzZWRWYXJSZWZzIiwiU3RhdGljQ29udGV4dC5nZXRVbnVzZWRWYXJpYWJsZXMiLCJTdGF0aWNDb250ZXh0LmFkZFZhclJlZnMiLCJTdGF0aWNDb250ZXh0LmFkZFZhclJlZiJdLCJtYXBwaW5ncyI6IjtBQUFBLCtDQUErQztBQUMvQyxJQUFZLENBQUMsV0FBTSxRQUFRLENBQUMsQ0FBQTtBQUM1QixzQkFBa0IsU0FBUyxDQUFDLENBQUE7QUFJNUI7SUFRSUEsWUFBWUEsTUFBcUJBLEVBQUVBLFFBQWtCQTtRQUo3Q0MsZUFBVUEsR0FBWUEsRUFBRUEsQ0FBQ0E7UUFDekJBLGNBQVNBLEdBQWVBLEVBQUVBLENBQUNBO1FBQzNCQSxZQUFPQSxHQUFZQSxFQUFFQSxDQUFDQTtRQUcxQkEsSUFBSUEsQ0FBQ0EsTUFBTUEsR0FBR0EsTUFBTUEsQ0FBQ0E7UUFDckJBLElBQUlBLENBQUNBLFFBQVFBLEdBQUdBLFFBQVFBLENBQUNBO0lBQzdCQSxDQUFDQTtJQUVERCxhQUFhQSxDQUFDQSxHQUFhQTtRQUN2QkUsTUFBTUEsQ0FBQ0EsSUFBSUEsYUFBYUEsQ0FBQ0EsSUFBSUEsRUFBRUEsR0FBR0EsQ0FBQ0EsQ0FBQ0E7SUFDeENBLENBQUNBO0lBRURGLFdBQVdBO1FBQ1BHLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLFFBQVFBLENBQUNBO0lBQ3pCQSxDQUFDQTtJQUVESCxXQUFXQSxDQUFDQSxRQUFrQkE7UUFDMUJJLElBQUlBLENBQUNBLFFBQVFBLEdBQUdBLFFBQVFBLENBQUNBO1FBQ3pCQSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQTtJQUNoQkEsQ0FBQ0E7SUFFREosU0FBU0E7UUFDTEssTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsTUFBTUEsQ0FBQ0E7SUFDdkJBLENBQUNBO0lBRURMLFlBQVlBLENBQUNBLE1BQWNBLEVBQUVBLEdBQVdBO1FBQ3BDTSxJQUFJQSxDQUFDQSxVQUFVQSxDQUFDQSxJQUFJQSxDQUFDQSxJQUFJQSxlQUFLQSxDQUFDQSxNQUFNQSxFQUFFQSxHQUFHQSxFQUFFQSxFQUFFQSxDQUFDQSxDQUFDQSxDQUFDQTtRQUNqREEsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0E7SUFDaEJBLENBQUNBO0lBRUROLG9CQUFvQkEsQ0FBQ0EsTUFBY0E7UUFDL0JPLElBQUlBLEtBQUtBLEdBQUdBLENBQUNBLENBQUNBLElBQUlBLENBQUNBLElBQUlBLENBQUNBLFVBQVVBLEVBQUVBLEVBQUVBLE1BQU1BLEVBQUVBLE1BQU1BLEVBQUVBLENBQUNBLENBQUNBO1FBQ3hEQSxFQUFFQSxDQUFBQSxDQUFDQSxDQUFDQSxLQUFLQSxJQUFJQSxJQUFJQSxDQUFDQSxNQUFNQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUN2QkEsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsTUFBTUEsQ0FBQ0Esb0JBQW9CQSxDQUFDQSxNQUFNQSxDQUFDQSxDQUFDQTtRQUNwREEsQ0FBQ0E7UUFDREEsTUFBTUEsQ0FBQ0EsS0FBS0EsQ0FBQ0E7SUFDakJBLENBQUNBO0lBRURQLFdBQVdBLENBQUNBLENBQVdBO1FBQ25CUSxJQUFJQSxDQUFDQSxTQUFTQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtRQUN2QkEsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0E7SUFDaEJBLENBQUNBO0lBRURSLFdBQVdBLENBQUNBLFFBQWtCQTtRQUMxQlMsSUFBSUEsS0FBS0EsR0FBR0EsQ0FBQ0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsU0FBU0EsRUFBRUEsVUFBU0EsQ0FBQ0E7WUFDekMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsS0FBSyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEQsQ0FBQyxDQUFDQSxDQUFDQTtRQUNIQSxFQUFFQSxDQUFBQSxDQUFDQSxLQUFLQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUNQQSxNQUFNQSxDQUFDQSxLQUFLQSxDQUFDQTtRQUNqQkEsQ0FBQ0E7UUFBQ0EsSUFBSUEsQ0FBQ0EsRUFBRUEsQ0FBQUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsTUFBTUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDcEJBLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLE1BQU1BLENBQUNBLFdBQVdBLENBQUNBLFFBQVFBLENBQUNBLENBQUNBO1FBQzdDQSxDQUFDQTtJQUNMQSxDQUFDQTtJQUVEVCxnQkFBZ0JBO1FBQ1pVLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLE9BQU9BLENBQUNBLE1BQU1BLENBQUNBLE1BQU1BO1lBQzdCQSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxTQUFTQSxDQUFDQSxNQUFNQSxDQUFDQSxDQUFDQSxNQUFNQSxNQUFNQSxDQUFDQSxDQUFDQSxDQUFDQSxTQUFTQSxFQUFFQSxLQUFLQSxNQUFNQSxDQUFDQSxTQUFTQSxFQUFFQSxJQUFJQSxDQUFDQSxDQUFDQSxZQUFZQSxFQUFFQSxLQUFLQSxNQUFNQSxDQUFDQSxZQUFZQSxFQUFFQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQSxNQUFNQSxLQUFLQSxDQUFDQSxDQUFDQTtRQUNuSkEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7SUFDUEEsQ0FBQ0E7SUFFRFYsa0JBQWtCQTtRQUNkVyxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxTQUFTQSxDQUFDQSxNQUFNQSxDQUFDQSxDQUFDQTtZQUMxQkEsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsT0FBT0EsQ0FBQ0EsTUFBTUEsQ0FBQ0EsTUFBTUEsTUFBTUEsTUFBTUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsU0FBU0EsRUFBRUEsS0FBS0EsTUFBTUEsQ0FBQ0EsU0FBU0EsRUFBRUEsSUFBSUEsQ0FBQ0EsQ0FBQ0EsWUFBWUEsRUFBRUEsS0FBS0EsTUFBTUEsQ0FBQ0EsWUFBWUEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsTUFBTUEsS0FBS0EsQ0FBQ0EsQ0FBQ0E7UUFDdEpBLENBQUNBLENBQUNBLENBQUNBO0lBQ1BBLENBQUNBO0lBRURYLFVBQVVBLENBQUNBLE1BQWVBO1FBQ3RCWSxJQUFJQSxDQUFDQSxPQUFPQSxHQUFHQSxJQUFJQSxDQUFDQSxPQUFPQSxDQUFDQSxNQUFNQSxDQUFDQSxNQUFNQSxDQUFDQSxDQUFDQTtRQUMzQ0EsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0E7SUFDaEJBLENBQUNBO0lBRURaLFNBQVNBLENBQUNBLEtBQVlBO1FBQ2xCYSxJQUFJQSxDQUFDQSxPQUFPQSxDQUFDQSxJQUFJQSxDQUFDQSxLQUFLQSxDQUFDQSxDQUFDQTtRQUN6QkEsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0E7SUFDaEJBLENBQUNBO0FBQ0xiLENBQUNBO2dDQUFBIiwiZmlsZSI6ImxpYi9jb21waWxlci9TdGF0aWNDb250ZXh0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uLy4uL3R5cGluZ3MvdHNkLmQudHNcIiAvPlxuaW1wb3J0ICogYXMgXyBmcm9tIFwibG9kYXNoXCI7XG5pbXBvcnQgUU5hbWUgZnJvbSBcIi4vUU5hbWVcIjtcbmltcG9ydCBWYXJpYWJsZSBmcm9tIFwiLi9WYXJpYWJsZVwiO1xuaW1wb3J0IFBvc2l0aW9uIGZyb20gXCIuL3BhcnNlcnMvUG9zaXRpb25cIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3RhdGljQ29udGV4dCB7XG5cbiAgICBwcml2YXRlIHBhcmVudDogU3RhdGljQ29udGV4dDtcbiAgICBwcml2YXRlIHBvc2l0aW9uOiBQb3NpdGlvbjtcbiAgICBwcml2YXRlIG5hbWVzcGFjZXM6IFFOYW1lW10gPSBbXTtcbiAgICBwcml2YXRlIHZhcmlhYmxlczogVmFyaWFibGVbXSA9IFtdO1xuICAgIHByaXZhdGUgdmFyUmVmczogUU5hbWVbXSA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IocGFyZW50OiBTdGF0aWNDb250ZXh0LCBwb3NpdGlvbjogUG9zaXRpb24pIHtcbiAgICAgICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgICAgIHRoaXMucG9zaXRpb24gPSBwb3NpdGlvbjtcbiAgICB9XG5cbiAgICBjcmVhdGVDb250ZXh0KHBvczogUG9zaXRpb24pOiBTdGF0aWNDb250ZXh0IHtcbiAgICAgICAgcmV0dXJuIG5ldyBTdGF0aWNDb250ZXh0KHRoaXMsIHBvcyk7XG4gICAgfVxuXG4gICAgZ2V0UG9zaXRpb24oKTogUG9zaXRpb24ge1xuICAgICAgICByZXR1cm4gdGhpcy5wb3NpdGlvbjtcbiAgICB9XG5cbiAgICBzZXRQb3NpdGlvbihwb3NpdGlvbjogUG9zaXRpb24pOiBTdGF0aWNDb250ZXh0IHtcbiAgICAgICAgdGhpcy5wb3NpdGlvbiA9IHBvc2l0aW9uO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBnZXRQYXJlbnQoKTogU3RhdGljQ29udGV4dCB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhcmVudDtcbiAgICB9XG5cbiAgICBhZGROYW1lc3BhY2UocHJlZml4OiBzdHJpbmcsIHVyaTogc3RyaW5nKTogU3RhdGljQ29udGV4dCB7XG4gICAgICAgIHRoaXMubmFtZXNwYWNlcy5wdXNoKG5ldyBRTmFtZShwcmVmaXgsIHVyaSwgXCJcIikpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBnZXROYW1lc3BhY2VCeVByZWZpeChwcmVmaXg6IHN0cmluZyk6IFFOYW1lIHtcbiAgICAgICAgdmFyIHFuYW1lID0gXy5maW5kKHRoaXMubmFtZXNwYWNlcywgeyBwcmVmaXg6IHByZWZpeCB9KTtcbiAgICAgICAgaWYoIXFuYW1lICYmIHRoaXMucGFyZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnQuZ2V0TmFtZXNwYWNlQnlQcmVmaXgocHJlZml4KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcW5hbWU7XG4gICAgfVxuXG4gICAgYWRkVmFyaWFibGUodjogVmFyaWFibGUpOiBTdGF0aWNDb250ZXh0IHtcbiAgICAgICAgdGhpcy52YXJpYWJsZXMucHVzaCh2KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgZ2V0VmFyaWFibGUodmFyaWFibGU6IFZhcmlhYmxlKTogVmFyaWFibGUge1xuICAgICAgICB2YXIgZm91bmQgPSBfLmZpbmQodGhpcy52YXJpYWJsZXMsIGZ1bmN0aW9uKHYpe1xuICAgICAgICAgICAgcmV0dXJuIHYudG9TdHJpbmcoKSA9PT0gdmFyaWFibGUudG9TdHJpbmcoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmKGZvdW5kKSB7XG4gICAgICAgICAgICByZXR1cm4gZm91bmQ7XG4gICAgICAgIH0gZWxzZSBpZih0aGlzLnBhcmVudCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyZW50LmdldFZhcmlhYmxlKHZhcmlhYmxlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldFVudXNlZFZhclJlZnMoKTogUU5hbWVbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhclJlZnMuZmlsdGVyKHZhclJlZiA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy52YXJpYWJsZXMuZmlsdGVyKHYgPT4geyByZXR1cm4gdi5nZXRQcmVmaXgoKSA9PT0gdmFyUmVmLmdldFByZWZpeCgpICYmIHYuZ2V0TG9jYWxOYW1lKCkgPT09IHZhclJlZi5nZXRMb2NhbE5hbWUoKTsgfSkubGVuZ3RoID09PSAwO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRVbnVzZWRWYXJpYWJsZXMoKTogVmFyaWFibGVbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhcmlhYmxlcy5maWx0ZXIodiA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy52YXJSZWZzLmZpbHRlcih2YXJSZWYgPT4geyByZXR1cm4gdi5nZXRQcmVmaXgoKSA9PT0gdmFyUmVmLmdldFByZWZpeCgpICYmIHYuZ2V0TG9jYWxOYW1lKCkgPT09IHZhclJlZi5nZXRMb2NhbE5hbWUoKTsgfSkubGVuZ3RoID09PSAwO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBhZGRWYXJSZWZzKHFuYW1lczogUU5hbWVbXSk6IFN0YXRpY0NvbnRleHQge1xuICAgICAgICB0aGlzLnZhclJlZnMgPSB0aGlzLnZhclJlZnMuY29uY2F0KHFuYW1lcyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGFkZFZhclJlZihxbmFtZTogUU5hbWUpOiBTdGF0aWNDb250ZXh0IHtcbiAgICAgICAgdGhpcy52YXJSZWZzLnB1c2gocW5hbWUpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG59XG4iXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0=