@atomist/rug
Version:
TypeScript model for Atomist Rugs, see http://docs.atomist.com/
59 lines (58 loc) • 2.5 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
/**
* Convenient superclass that wraps an existing PathExpressionEngine
* to decorate every returned node. Also adds convenience methods.
*/
var TransformingPathExpressionEngine = (function () {
function TransformingPathExpressionEngine(delegate, nodeTransform) {
this.delegate = delegate;
this.nodeTransform = nodeTransform;
}
TransformingPathExpressionEngine.prototype.addType = function (dt) {
this.delegate = this.delegate.addType(dt);
return this;
};
// Unfortunately other calls don't go through this,
// because they're in Scala
TransformingPathExpressionEngine.prototype.evaluate = function (root, expr) {
var _this = this;
var m1 = this.delegate.evaluate(root, expr);
var m2 = {
root: this.nodeTransform(m1.root),
matches: m1.matches.map(function (n) { return _this.nodeTransform(n); }),
pathExpressionEngine: m1.pathExpressionEngine,
teamId: m1.teamId,
contextRoot: m1.contextRoot,
gitProjectLoader: m1.gitProjectLoader,
};
return m2;
};
TransformingPathExpressionEngine.prototype.with = function (root, expr, f) {
var _this = this;
this.delegate.with(root, expr, function (n) {
var transformed = _this.nodeTransform(n);
f(transformed);
});
};
TransformingPathExpressionEngine.prototype.scalar = function (root, expr) {
return this.nodeTransform(this.delegate.scalar(root, expr));
};
TransformingPathExpressionEngine.prototype.as = function (root, name) {
return this.nodeTransform(this.delegate.as(root, name));
};
// Find the children of the current node of this time
TransformingPathExpressionEngine.prototype.children = function (root, name) {
var _this = this;
return this.delegate.children(root, name)
.map(function (n) { return _this.nodeTransform(n); });
};
// -------------------------------------------------------------
// Additional convenience methods
// -------------------------------------------------------------
TransformingPathExpressionEngine.prototype.withExpression = function (root, pe, f) {
this.with(root, pe.expression, f);
};
return TransformingPathExpressionEngine;
}());
exports.TransformingPathExpressionEngine = TransformingPathExpressionEngine;