ts-simple-ast
Version:
TypeScript compiler wrapper for AST navigation and code generation.
28 lines (26 loc) • 1.39 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const areNodesEqual_1 = require("./../areNodesEqual");
const StraightReplacementNodeHandler_1 = require("./StraightReplacementNodeHandler");
/**
* Replacement handler that tries to find the parents.
*/
class ParentFinderReplacementNodeHandler extends StraightReplacementNodeHandler_1.StraightReplacementNodeHandler {
constructor(compilerFactory, parentNodeHandler, changingParent) {
super(compilerFactory);
this.parentNodeHandler = parentNodeHandler;
this.changingParent = changingParent;
this.foundParent = false;
this.changingParentParent = this.changingParent.getParentSyntaxList() || this.changingParent.getParent();
}
handleNode(currentNode, newNode) {
if (!this.foundParent && areNodesEqual_1.areNodesEqual(newNode, this.changingParent) && areNodesEqual_1.areNodesEqual(newNode.getParentSyntaxList() || newNode.getParent(), this.changingParentParent)) {
this.foundParent = true; // don't bother checking for the parent once it's found
this.parentNodeHandler.handleNode(currentNode, newNode);
}
else
super.handleNode(currentNode, newNode);
}
}
exports.ParentFinderReplacementNodeHandler = ParentFinderReplacementNodeHandler;
//# sourceMappingURL=ParentFinderReplacementNodeHandler.js.map