@ton-ai-core/vibecode-linter
Version:
Advanced TypeScript linter with Git integration, dependency analysis, and comprehensive error reporting
77 lines • 3.48 kB
TypeScript
/**
* Размер табуляции по умолчанию (как в git diff и ESLint).
*/
export declare const TAB_WIDTH = 8;
/**
* Конвертирует визуальную колонку (как в ESLint) в реальный индекс символа.
*
* CHANGE: Reworked iteration to compute target column purely through monotone visual offsets
* WHY: Stryker report highlighted equivalent mutants due to unused flags; tight loop makes every branch observable
* QUOTE(UserMsg#6): "Можешь так же тесты исправить о которых было описано в отчёте?"
* REF: output:849-897 ([Survived] BooleanLiteral / ConditionalExpression for column.ts)
* SOURCE: "Stryker Mutant Survivors Log" (output file)
* FORMAT THEOREM: ∀i ∈ ℤ≥0, visualOffset_i ≤ visualOffset_{i+1} ∧ target ∈ [visualOffset_i, visualOffset_{i+1}) ⇒ return index(i) + δ
* QUOTE(LINT): "Function has too many lines/complexity"
* REF: ESLint max-lines-per-function, complexity
* SOURCE: n/a
*
* ESLint и git diff считают табуляцию как 8 пробелов, но в строке это один символ.
* Эта функция преобразует визуальную позицию в реальный индекс в строке.
*
* @param lineContent Строка исходного кода без diff-префикса
* @param visualColumn Визуальная колонка (0-based)
* @param tabSize Размер табуляции; по умолчанию 8, как в git diff и ESLint
* @returns Реальный индекс символа (0-based)
*
* @pure true
* @invariant visualColumn >= 0
* @complexity O(n) где n = длина строки
*
* @example
* ```ts
* // Строка: "x\ty" (x, tab, y)
* // Визуально: "x y" (x, 7 spaces, y)
* const realIndex = computeRealColumnFromVisual("x\ty", 8, 8);
* // Returns 2 (индекс символа 'y')
* ```
*/
export declare function computeRealColumnFromVisual(lineContent: string, visualColumn: number, tabSize?: number): number;
/**
* Вычисляет визуальную позицию колонки с учетом табуляции.
*
* @param content Строка исходного кода
* @param index Индекс символа в строке (0-based)
* @param tabWidth Размер табуляции
* @returns Визуальная колонка (0-based)
*
* @pure true
* @invariant result >= 0
* @complexity O(n) где n = index
*
* @example
* ```ts
* // Строка: "x\ty" (x, tab, y)
* const visual = visualColumnAt("x\ty", 2, 8);
* // Returns 8 (визуальная позиция 'y')
* ```
*/
export declare function visualColumnAt(content: string, index: number, tabWidth?: number): number;
/**
* Раскрывает табуляцию в строке в пробелы.
*
* @param content Строка исходного кода с табуляцией
* @param tabWidth Размер табуляции
* @returns Строка с раскрытыми табуляциями
*
* @pure true
* @invariant result.length >= content.length
* @complexity O(n) где n = длина строки
*
* @example
* ```ts
* const expanded = expandTabs("x\ty", 8);
* // Returns "x y" (x, 7 spaces, y)
* ```
*/
export declare function expandTabs(content: string, tabWidth?: number): string;
//# sourceMappingURL=column.d.ts.map