pi / packages /coding-agent /src /modes /interactive /components /markdown-transform.ts
SaylorTwift's picture
SaylorTwift HF Staff
Add files using upload-large-folder tool
f500658 verified
Raw
History Blame Contribute Delete
981 Bytes
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;
}