Spaces:
Paused
Paused
| import type { MarkdownTableMode } from "../config/types.base.js"; | |
| import { markdownToIRWithMeta } from "./ir.js"; | |
| import { renderMarkdownWithMarkers } from "./render.js"; | |
| const MARKDOWN_STYLE_MARKERS = { | |
| bold: { open: "**", close: "**" }, | |
| italic: { open: "_", close: "_" }, | |
| strikethrough: { open: "~~", close: "~~" }, | |
| code: { open: "`", close: "`" }, | |
| code_block: { open: "```\n", close: "```" }, | |
| } as const; | |
| export function convertMarkdownTables(markdown: string, mode: MarkdownTableMode): string { | |
| if (!markdown || mode === "off") { | |
| return markdown; | |
| } | |
| const { ir, hasTables } = markdownToIRWithMeta(markdown, { | |
| linkify: false, | |
| autolink: false, | |
| headingStyle: "none", | |
| blockquotePrefix: "", | |
| tableMode: mode, | |
| }); | |
| if (!hasTables) { | |
| return markdown; | |
| } | |
| return renderMarkdownWithMarkers(ir, { | |
| styleMarkers: MARKDOWN_STYLE_MARKERS, | |
| escapeText: (text) => text, | |
| buildLink: (link, text) => { | |
| const href = link.href.trim(); | |
| if (!href) { | |
| return null; | |
| } | |
| const label = text.slice(link.start, link.end); | |
| if (!label) { | |
| return null; | |
| } | |
| return { start: link.start, end: link.end, open: "[", close: `](${href})` }; | |
| }, | |
| }); | |
| } | |