UNPKG

refakts

Version:

TypeScript refactoring tool built for AI coding agents to perform precise refactoring operations via command line instead of requiring complete code regeneration.

41 lines 1.65 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ExpressionAnalyzer = void 0; const ts_morph_1 = require("ts-morph"); class ExpressionAnalyzer { needsParentheses(node, context) { if (!ts_morph_1.Node.isBinaryExpression(node)) { return false; } return this.isSimpleAdditionOrSubtraction(node); } formatWithParentheses(initializer, context) { const initializerText = initializer.getText(); if (this.needsParentheses(initializer, context)) { return `(${initializerText})`; } return initializerText; } isSimpleAdditionOrSubtraction(node) { const binaryExpr = node.asKindOrThrow(ts_morph_1.SyntaxKind.BinaryExpression); if (!this.isAdditionOrSubtraction(binaryExpr)) { return false; } return this.hasSimpleOperands(binaryExpr); } isAdditionOrSubtraction(binaryExpr) { const operator = binaryExpr.getOperatorToken().getKind(); return operator === ts_morph_1.SyntaxKind.PlusToken || operator === ts_morph_1.SyntaxKind.MinusToken; } hasSimpleOperands(binaryExpr) { const left = binaryExpr.getLeft(); const right = binaryExpr.getRight(); return this.areSimpleOperands(left, right); } areSimpleOperands(left, right) { return (ts_morph_1.Node.isIdentifier(left) || ts_morph_1.Node.isNumericLiteral(left)) && (ts_morph_1.Node.isIdentifier(right) || ts_morph_1.Node.isNumericLiteral(right)); } } exports.ExpressionAnalyzer = ExpressionAnalyzer; //# sourceMappingURL=expression-analyzer.js.map