function splitTextRangesByPreferredBreaks(
text: string,
limit: number,
): Array<{ start: number; end: number }> { const ranges: Array<{ start: number; end: number }> = [];
let start = 0;
while (start < text.length) { const maxEnd = Math.min(text.length, start + limit);
let end = maxEnd; if (maxEnd < text.length) {
end =
findParagraphBreak(text, start, maxEnd) ??
findLastBreak(text, "\n", start, maxEnd) ??
findLastWhitespaceBreak(text, start, maxEnd) ??
maxEnd;
}
if (end <= start) {
end = maxEnd;
}
ranges.push({ start, end });
start = end;
}
return ranges;
}
function findParagraphBreak(text: string, start: number, end: number): number | undefined { const slice = text.slice(start, end); const matches = slice.matchAll(/\n[\t ]*\n+/g);
let lastMatch: RegExpMatchArray | undefined; for (const match of matches) {
lastMatch = match;
} if (!lastMatch || lastMatch.index === undefined) { return undefined;
} return start + lastMatch.index + lastMatch[0].length;
}
function findLastBreak(
text: string,
marker: string,
start: number,
end: number,
): number | undefined { const index = text.lastIndexOf(marker, end - 1); if (index < start) { return undefined;
} return index + marker.length;
}
function findLastWhitespaceBreak(text: string, start: number, end: number): number | undefined { for (let index = end - 1; index > start; index -= 1) { if (/\s/.test(text[index])) { return index + 1;
}
} return undefined;
}
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-06-07)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.