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.

83 lines 3.02 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SelectOutputHandler = void 0; class SelectOutputHandler { outputResults(results) { if (this.hasNoResults(results)) { console.log('No Matches'); return; } this.processAllResults(results); } hasNoResults(results) { return results.length === 0; } processAllResults(results) { for (let i = 0; i < results.length; i++) { const result = results[i]; this.outputSingleResult(result); this.addSpacingIfNeeded(results, i); } } addSpacingIfNeeded(results, index) { if (index < results.length - 1) { const currentResult = results[index]; const nextResult = results[index + 1]; if (this.needsSpacing(currentResult, nextResult)) { console.log(''); } } } needsSpacing(currentResult, nextResult) { return this.isMultiLineResult(currentResult) || this.isMultiLineResult(nextResult); } outputSingleResult(result) { const outputType = this.determineOutputType(result); this.executeOutput(result, outputType); } determineOutputType(result) { const typeChecks = [ { check: this.hasPreviewContent(result), type: 'preview' }, { check: this.isMultiLineResult(result), type: 'multiline' }, { check: !!result.content, type: 'withContent' } ]; const found = typeChecks.find(check => check.check); return found ? found.type : 'locationOnly'; } hasPreviewContent(result) { return !!(result.content && result.context); } executeOutput(result, outputType) { const outputHandlers = this.getOutputHandlers(result); const handler = outputHandlers[outputType]; if (handler) { handler(); } } getOutputHandlers(result) { return { preview: () => this.outputPreviewResult(result), multiline: () => this.outputMultiLineResult(result), withContent: () => console.log(`${result.location} ${result.content}`), locationOnly: () => console.log(result.location) }; } outputPreviewResult(result) { console.log(`${result.location} ${result.content}`); console.log(`Context: ${result.context}`); } isMultiLineResult(result) { if (!result.content || !result.location.includes(':-') || !result.location.includes(':')) { return false; } const hasMultiLineRange = result.location.match(/(\d+):-(\d+):/); return hasMultiLineRange ? hasMultiLineRange[1] !== hasMultiLineRange[2] : false; } outputMultiLineResult(result) { console.log(result.location); console.log(result.content); console.log(result.location); } } exports.SelectOutputHandler = SelectOutputHandler; //# sourceMappingURL=output-handler.js.map