ts-simple-ast
Version:
TypeScript compiler wrapper for static analysis and code manipulation.
58 lines (57 loc) • 2.75 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var errors = require("../../../../errors");
var manipulation_1 = require("../../../../manipulation");
var typescript_1 = require("../../../../typescript");
var utils_1 = require("../../../../utils");
var callBaseSet_1 = require("../../callBaseSet");
var callBaseGetStructure_1 = require("../../callBaseGetStructure");
function InitializerSetExpressionableNode(Base) {
return /** @class */ (function (_super) {
tslib_1.__extends(class_1, _super);
function class_1() {
return _super !== null && _super.apply(this, arguments) || this;
}
class_1.prototype.removeInitializer = function () {
var initializer = this.getInitializer();
if (initializer == null)
return this;
var previousSibling = initializer.getPreviousSiblingIfKindOrThrow(typescript_1.SyntaxKind.EqualsToken);
manipulation_1.removeChildren({
children: [previousSibling, initializer],
removePrecedingSpaces: true
});
return this;
};
class_1.prototype.setInitializer = function (textOrWriterFunction) {
var text = utils_1.getTextFromStringOrWriter(this._getWriterWithQueuedChildIndentation(), textOrWriterFunction);
errors.throwIfWhitespaceOrNotString(text, "textOrWriterFunction");
if (this.hasInitializer())
this.removeInitializer();
var semiColonToken = this.getLastChildIfKind(typescript_1.SyntaxKind.SemicolonToken);
manipulation_1.insertIntoParentTextRange({
insertPos: semiColonToken != null ? semiColonToken.getPos() : this.getEnd(),
parent: this,
newText: " = " + text
});
return this;
};
class_1.prototype.set = function (structure) {
callBaseSet_1.callBaseSet(Base.prototype, this, structure);
if (structure.initializer != null)
this.setInitializer(structure.initializer);
else if (structure.hasOwnProperty("initializer"))
this.removeInitializer();
return this;
};
class_1.prototype.getStructure = function () {
var initializer = this.getInitializer();
return callBaseGetStructure_1.callBaseGetStructure(Base.prototype, this, {
initializer: initializer ? initializer.getText() : undefined
});
};
return class_1;
}(Base));
}
exports.InitializerSetExpressionableNode = InitializerSetExpressionableNode;