jsoniq
Version:
JSONiq implementation for JavaScript
29 lines (27 loc) • 3.98 kB
JavaScript
"use strict";
/// <reference path="../../../typings/lodash/lodash.d.ts" />
//import _ = require("lodash");
var jerr = require("../../errors");
var UpdatePrimitive_1 = require("./UpdatePrimitive");
class ReplaceInArray extends UpdatePrimitive_1.default {
constructor(id, ordPath, position, item) {
super(id, ordPath);
this.position = position;
this.item = item;
}
apply() {
var target = this.getTarget();
if (target[this.position] === undefined) {
throw new jerr.JNUP0016("" + this.position);
}
target[this.position] = this.item;
return this;
}
invert(item, pul) {
pul.deleteFromArray(this.id, this.ordPath, this.position);
pul.insertIntoArray(this.id, this.ordPath, this.position, item);
return this;
}
}
exports.default = ReplaceInArray;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi91cGRhdGVzL3ByaW1pdGl2ZXMvUmVwbGFjZUluQXJyYXkudHMiXSwibmFtZXMiOlsiUmVwbGFjZUluQXJyYXkiLCJSZXBsYWNlSW5BcnJheS5jb25zdHJ1Y3RvciIsIlJlcGxhY2VJbkFycmF5LmFwcGx5IiwiUmVwbGFjZUluQXJyYXkuaW52ZXJ0Il0sIm1hcHBpbmdzIjoiO0FBQUEsNERBQTREO0FBQzVELCtCQUErQjtBQUMvQixJQUFZLElBQUksV0FBTSxjQUFjLENBQUMsQ0FBQTtBQUNyQyxnQ0FBNEIsbUJBQW1CLENBQUMsQ0FBQTtBQUloRCw2QkFBNEMseUJBQWU7SUFJdkRBLFlBQVlBLEVBQVVBLEVBQUVBLE9BQWlCQSxFQUFFQSxRQUFnQkEsRUFBRUEsSUFBU0E7UUFDbEVDLE1BQU1BLEVBQUVBLEVBQUVBLE9BQU9BLENBQUNBLENBQUNBO1FBQ25CQSxJQUFJQSxDQUFDQSxRQUFRQSxHQUFHQSxRQUFRQSxDQUFDQTtRQUN6QkEsSUFBSUEsQ0FBQ0EsSUFBSUEsR0FBR0EsSUFBSUEsQ0FBQ0E7SUFDckJBLENBQUNBO0lBRURELEtBQUtBO1FBQ0RFLElBQUlBLE1BQU1BLEdBQUdBLElBQUlBLENBQUNBLFNBQVNBLEVBQUVBLENBQUNBO1FBQzlCQSxFQUFFQSxDQUFBQSxDQUFDQSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxRQUFRQSxDQUFDQSxLQUFLQSxTQUFTQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUNyQ0EsTUFBTUEsSUFBSUEsSUFBSUEsQ0FBQ0EsUUFBUUEsQ0FBQ0EsRUFBRUEsR0FBR0EsSUFBSUEsQ0FBQ0EsUUFBUUEsQ0FBQ0EsQ0FBQ0E7UUFDaERBLENBQUNBO1FBQ0RBLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLFFBQVFBLENBQUNBLEdBQUdBLElBQUlBLENBQUNBLElBQUlBLENBQUNBO1FBQ2xDQSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQTtJQUNoQkEsQ0FBQ0E7SUFFREYsTUFBTUEsQ0FBQ0EsSUFBU0EsRUFBRUEsR0FBU0E7UUFDdkJHLEdBQUdBLENBQUNBLGVBQWVBLENBQUNBLElBQUlBLENBQUNBLEVBQUVBLEVBQUVBLElBQUlBLENBQUNBLE9BQU9BLEVBQUVBLElBQUlBLENBQUNBLFFBQVFBLENBQUNBLENBQUNBO1FBQzFEQSxHQUFHQSxDQUFDQSxlQUFlQSxDQUFDQSxJQUFJQSxDQUFDQSxFQUFFQSxFQUFFQSxJQUFJQSxDQUFDQSxPQUFPQSxFQUFFQSxJQUFJQSxDQUFDQSxRQUFRQSxFQUFFQSxJQUFJQSxDQUFDQSxDQUFDQTtRQUNoRUEsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0E7SUFDaEJBLENBQUNBO0FBQ0xILENBQUNBO2lDQUFBIiwiZmlsZSI6ImxpYi91cGRhdGVzL3ByaW1pdGl2ZXMvUmVwbGFjZUluQXJyYXkuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vLi4vLi4vdHlwaW5ncy9sb2Rhc2gvbG9kYXNoLmQudHNcIiAvPlxuLy9pbXBvcnQgXyA9IHJlcXVpcmUoXCJsb2Rhc2hcIik7XG5pbXBvcnQgKiBhcyBqZXJyIGZyb20gXCIuLi8uLi9lcnJvcnNcIjtcbmltcG9ydCBVcGRhdGVQcmltaXRpdmUgZnJvbSBcIi4vVXBkYXRlUHJpbWl0aXZlXCI7XG5cbmltcG9ydCB7IElQVUwgfSBmcm9tIFwiLi4vSVBVTFwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSZXBsYWNlSW5BcnJheSBleHRlbmRzIFVwZGF0ZVByaW1pdGl2ZSB7XG4gICAgcG9zaXRpb246IG51bWJlcjtcbiAgICBpdGVtOiBhbnk7XG5cbiAgICBjb25zdHJ1Y3RvcihpZDogc3RyaW5nLCBvcmRQYXRoOiBzdHJpbmdbXSwgcG9zaXRpb246IG51bWJlciwgaXRlbTogYW55KSB7XG4gICAgICAgIHN1cGVyKGlkLCBvcmRQYXRoKTtcbiAgICAgICAgdGhpcy5wb3NpdGlvbiA9IHBvc2l0aW9uO1xuICAgICAgICB0aGlzLml0ZW0gPSBpdGVtO1xuICAgIH1cblxuICAgIGFwcGx5KCk6IFVwZGF0ZVByaW1pdGl2ZSB7XG4gICAgICAgIHZhciB0YXJnZXQgPSB0aGlzLmdldFRhcmdldCgpO1xuICAgICAgICBpZih0YXJnZXRbdGhpcy5wb3NpdGlvbl0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IGplcnIuSk5VUDAwMTYoXCJcIiArIHRoaXMucG9zaXRpb24pO1xuICAgICAgICB9XG4gICAgICAgIHRhcmdldFt0aGlzLnBvc2l0aW9uXSA9IHRoaXMuaXRlbTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgaW52ZXJ0KGl0ZW06IGFueSwgcHVsOiBJUFVMKTogVXBkYXRlUHJpbWl0aXZlIHtcbiAgICAgICAgcHVsLmRlbGV0ZUZyb21BcnJheSh0aGlzLmlkLCB0aGlzLm9yZFBhdGgsIHRoaXMucG9zaXRpb24pO1xuICAgICAgICBwdWwuaW5zZXJ0SW50b0FycmF5KHRoaXMuaWQsIHRoaXMub3JkUGF0aCwgdGhpcy5wb3NpdGlvbiwgaXRlbSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ==