UNPKG

ts-simple-ast

Version:

TypeScript compiler wrapper for static analysis and code manipulation.

58 lines (57 loc) 2.75 kB
"use strict"; 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;