jsoniq
Version:
JSONiq implementation for JavaScript
74 lines (72 loc) • 10.1 kB
JavaScript
"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=