refakts
Version:
TypeScript refactoring tool built for AI coding agents to perform precise refactoring operations via command line instead of requiring complete code regeneration.
86 lines • 3.01 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.DefinitionFormatter = exports.PreviewFormatter = exports.LineFormatter = exports.BasicFormatter = void 0;
const definition_range_detector_1 = require("./definition-range-detector");
class BasicFormatter {
format(matches, fileName) {
return matches.map(match => this.formatMatch(match, fileName));
}
formatMatch(match, fileName) {
const location = this.createLocationString(match, fileName);
if (this.isMultilineMatch(match)) {
return this.formatMultilineMatch(match, location);
}
return this.formatSingleLineMatch(match, location);
}
createLocationString(match, fileName) {
return `[${fileName} ${match.line}:${match.column}-${match.endLine}:${match.endColumn}]`;
}
formatSingleLineMatch(match, location) {
return {
location,
content: match.text
};
}
isMultilineMatch(match) {
return match.line !== match.endLine;
}
formatMultilineMatch(match, location) {
return {
location: `\n${location}`,
content: `${match.text}\n${location}\n`
};
}
}
exports.BasicFormatter = BasicFormatter;
class LineFormatter {
format(matches, fileName) {
return matches.map(match => ({
location: `[${fileName} ${match.line}:-${match.line}:]`,
content: match.fullLine.trim()
}));
}
}
exports.LineFormatter = LineFormatter;
class PreviewFormatter {
format(matches, fileName) {
return matches.map(match => ({
location: `[${fileName} ${match.line}:${match.column}-${match.endLine}:${match.endColumn}]`,
content: match.fullLine.trim()
}));
}
}
exports.PreviewFormatter = PreviewFormatter;
class DefinitionFormatter {
constructor() {
this.detector = new definition_range_detector_1.DefinitionRangeDetector();
}
createDefinitionResult(match, fileName, file) {
const definitionRange = this.detector.findDefinitionRange(match, file);
if (!definitionRange) {
return null;
}
return this.buildDefinitionResult(definitionRange, fileName);
}
buildDefinitionResult(definitionRange, fileName) {
return {
location: `[${fileName} ${definitionRange.startLine}:-${definitionRange.endLine}:]`,
content: definitionRange.content
};
}
format(matches, fileName, file) {
const results = [];
for (const match of matches) {
this.processMatchForDefinition(match, fileName, file, results);
}
return results;
}
processMatchForDefinition(match, fileName, file, results) {
const result = this.createDefinitionResult(match, fileName, file);
if (result) {
results.push(result);
}
}
}
exports.DefinitionFormatter = DefinitionFormatter;
//# sourceMappingURL=result-formatters.js.map