refactor(slack): share markdown render options

This commit is contained in:
Peter Steinberger
2026-02-18 18:33:48 +00:00
parent 86f504e256
commit 37143cf70c

View File

@@ -94,6 +94,20 @@ type SlackMarkdownOptions = {
tableMode?: MarkdownTableMode;
};
function buildSlackRenderOptions() {
return {
styleMarkers: {
bold: { open: "*", close: "*" },
italic: { open: "_", close: "_" },
strikethrough: { open: "~", close: "~" },
code: { open: "`", close: "`" },
code_block: { open: "```\n", close: "```" },
},
escapeText: escapeSlackMrkdwnText,
buildLink: buildSlackLink,
};
}
export function markdownToSlackMrkdwn(
markdown: string,
options: SlackMarkdownOptions = {},
@@ -105,17 +119,7 @@ export function markdownToSlackMrkdwn(
blockquotePrefix: "> ",
tableMode: options.tableMode,
});
return renderMarkdownWithMarkers(ir, {
styleMarkers: {
bold: { open: "*", close: "*" },
italic: { open: "_", close: "_" },
strikethrough: { open: "~", close: "~" },
code: { open: "`", close: "`" },
code_block: { open: "```\n", close: "```" },
},
escapeText: escapeSlackMrkdwnText,
buildLink: buildSlackLink,
});
return renderMarkdownWithMarkers(ir, buildSlackRenderOptions());
}
export function markdownToSlackMrkdwnChunks(
@@ -131,17 +135,6 @@ export function markdownToSlackMrkdwnChunks(
tableMode: options.tableMode,
});
const chunks = chunkMarkdownIR(ir, limit);
return chunks.map((chunk) =>
renderMarkdownWithMarkers(chunk, {
styleMarkers: {
bold: { open: "*", close: "*" },
italic: { open: "_", close: "_" },
strikethrough: { open: "~", close: "~" },
code: { open: "`", close: "`" },
code_block: { open: "```\n", close: "```" },
},
escapeText: escapeSlackMrkdwnText,
buildLink: buildSlackLink,
}),
);
const renderOptions = buildSlackRenderOptions();
return chunks.map((chunk) => renderMarkdownWithMarkers(chunk, renderOptions));
}