function findLargestChunkTextLengthWithinRenderedLimit<TRendered>(
chunk: MarkdownIR,
renderedLimit: number,
options: RenderResolver<TRendered>,
): number { const currentTextLength = chunk.text.length; if (currentTextLength <= 1) { return currentTextLength;
}
// Rendered length is not guaranteed to be monotonic after escaping/link or // file-reference rewriting, so test exact candidates from longest to shortest. for (let candidateLength = currentTextLength - 1; candidateLength >= 1; candidateLength -= 1) { const candidate = sliceMarkdownIR(chunk, 0, candidateLength); const rendered = options.renderChunk(candidate); if (options.measureRendered(rendered) <= renderedLimit) { return candidateLength;
}
} return0;
}
function findMarkdownIRPreservedSplitIndex(text: string, start: number, limit: number): number { const maxEnd = Math.min(text.length, start + limit); if (maxEnd >= text.length) { return text.length;
}
let lastOutsideParenNewlineBreak = -1;
let lastOutsideParenWhitespaceBreak = -1;
let lastOutsideParenWhitespaceRunStart = -1;
let lastAnyNewlineBreak = -1;
let lastAnyWhitespaceBreak = -1;
let lastAnyWhitespaceRunStart = -1;
let parenDepth = 0;
let sawNonWhitespace = false;
for (let index = start; index < maxEnd; index += 1) { constchar = text[index]; if (char === "(") {
sawNonWhitespace = true;
parenDepth += 1; continue;
} if (char === ")" && parenDepth > 0) {
sawNonWhitespace = true;
parenDepth -= 1; continue;
} if (!/\s/.test(char)) {
sawNonWhitespace = true; continue;
} if (!sawNonWhitespace) { continue;
} if (char === "\n") {
lastAnyNewlineBreak = index + 1; if (parenDepth === 0) {
lastOutsideParenNewlineBreak = index + 1;
} continue;
} const whitespaceRunStart =
index === start || !/\s/.test(text[index - 1] ?? "") ? index : lastAnyWhitespaceRunStart;
lastAnyWhitespaceBreak = index + 1;
lastAnyWhitespaceRunStart = whitespaceRunStart; if (parenDepth === 0) {
lastOutsideParenWhitespaceBreak = index + 1;
lastOutsideParenWhitespaceRunStart = whitespaceRunStart;
}
}
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.