openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
31 lines (30 loc) • 1.2 kB
TypeScript
/** Markdown fenced-code block span with the opener data needed to reopen it. */
export type FenceSpan = {
start: number;
end: number;
openLine: string;
marker: string;
indent: string;
};
/** Streaming fence scanner state carried across partial markdown chunks. */
export type FenceScanState = {
atLineStart?: boolean;
open?: {
markerChar: string;
markerLen: number;
openLine: string;
marker: string;
indent: string;
};
};
/** Scans fenced-code spans incrementally so chunking can carry an open fence forward. */
export declare function scanFenceSpans(buffer: string, state?: FenceScanState): {
spans: FenceSpan[];
state: FenceScanState;
};
/** Parses all fenced-code spans in a complete markdown buffer. */
export declare function parseFenceSpans(buffer: string): FenceSpan[];
/** Looks up the fence containing an offset; spans must be sorted by start offset. */
export declare function findFenceSpanAt(spans: FenceSpan[], index: number): FenceSpan | undefined;
/** True when a chunk boundary would not split a fenced-code block. */
export declare function isSafeFenceBreak(spans: FenceSpan[], index: number): boolean;