23 lines
625 B
TypeScript
23 lines
625 B
TypeScript
export function countLines(text: string): number {
|
|
return text.split("\n").length;
|
|
}
|
|
|
|
export function hasBalancedFences(chunk: string): boolean {
|
|
let open: { markerChar: string; markerLen: number } | null = null;
|
|
for (const line of chunk.split("\n")) {
|
|
const match = line.match(/^( {0,3})(`{3,}|~{3,})(.*)$/);
|
|
if (!match) {
|
|
continue;
|
|
}
|
|
const marker = match[2];
|
|
if (!open) {
|
|
open = { markerChar: marker[0], markerLen: marker.length };
|
|
continue;
|
|
}
|
|
if (open.markerChar === marker[0] && marker.length >= open.markerLen) {
|
|
open = null;
|
|
}
|
|
}
|
|
return open === null;
|
|
}
|