File size: 981 Bytes
f500658 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | import type { MarkdownTransformContext, MarkdownTransformer } from "../../../core/extensions/types.ts";
export function createMarkdownTransform(
messageType: MarkdownTransformContext["messageType"],
isStreaming: boolean,
transformers: readonly MarkdownTransformer[],
): (markdown: string, availableWidth: number) => string {
return (markdown, availableWidth) =>
applyMarkdownTransformers(markdown, { messageType, isStreaming, availableWidth }, transformers);
}
function applyMarkdownTransformers(
markdown: string,
context: MarkdownTransformContext,
transformers: readonly MarkdownTransformer[],
): string {
let transformedMarkdown = markdown;
for (const transformer of transformers) {
try {
const transformed = transformer(transformedMarkdown, context);
if (typeof transformed === "string") {
transformedMarkdown = transformed;
}
} catch {
// Keep the current Markdown and continue with the next transformer.
}
}
return transformedMarkdown;
}
|