@pierre/diffs
Version:
50 lines • 1.67 kB
TypeScript
//#region src/utils/iterateOverFile.d.ts
interface IterateOverFileProps {
lines: string[];
startingLine?: number;
totalLines?: number;
callback: FileLineCallback;
}
interface FileLineCallbackProps {
lineIndex: number;
lineNumber: number;
content: string;
isLastLine: boolean;
}
type FileLineCallback = (props: FileLineCallbackProps) => boolean | void;
/**
* Iterates over lines in a file with optional windowing support.
*
* Similar to `iterateOverDiff` but simplified for linear file content.
* Supports viewport windowing for virtualization scenarios.
*
* @param props - Configuration for iteration
* @param props.lines - Pre-split array of lines (use splitFileContents() to create from string)
* @param props.startingLine - Optional starting line index (0-based, default: 0)
* @param props.totalLines - Optional max lines to iterate (default: Infinity)
* @param props.callback - Callback invoked for each line in the window.
* Return `true` to stop iteration early.
*
* @example
* ```typescript
* const lines = splitFileContents('line1\nline2\nline3');
* iterateOverFile({
* lines,
* startingLine: 0,
* totalLines: 10,
* callback: ({ lineIndex, lineNumber, content, isLastLine }) => {
* console.log(`Line ${lineNumber}: ${content}`);
* if (content.includes('stop')) return true; // Stop iteration
* }
* });
* ```
*/
declare function iterateOverFile({
lines,
startingLine,
totalLines,
callback
}: IterateOverFileProps): void;
//#endregion
export { FileLineCallback, FileLineCallbackProps, IterateOverFileProps, iterateOverFile };
//# sourceMappingURL=iterateOverFile.d.ts.map