refactor: adjust markdown line wrapping

This commit is contained in:
mitchell 2026-05-03 23:11:02 -04:00
parent 5e733a4e14
commit b9610663a6

View file

@ -49,16 +49,18 @@ export async function renderMarkdown(
return Bun.wrapAnsi( return Bun.wrapAnsi(
color.bold(`${"#".repeat(level)} ${children}\n\n`), color.bold(`${"#".repeat(level)} ${children}\n\n`),
columns, columns,
{ trim: false },
); );
}, },
paragraph: (children) => Bun.wrapAnsi(`${children}\n\n`, columns), paragraph: (children) =>
Bun.wrapAnsi(`${children}\n\n`, columns - 2, { trim: false }),
blockquote: (children) => { blockquote: (children) => {
const lines = children.split("\n"); const lines = Bun.wrapAnsi(children, columns).split("\n");
const toRender = lines const toRender = lines
.map((line) => `${chalk.dim("> ")}${line}`) .map((line) => `${chalk.dim("> ")}${line}`)
.join("\n") .join("\n")
.replace(/\n$/, "\n\n"); .concat("\n\n");
return Bun.wrapAnsi(toRender, columns); return toRender;
}, },
code: (children, meta) => { code: (children, meta) => {
let toRender = children; let toRender = children;
@ -77,10 +79,7 @@ export async function renderMarkdown(
return `\`\`\`${chalk.blue(meta?.language ?? "")}\n${toRender}\`\`\`\n`; return `\`\`\`${chalk.blue(meta?.language ?? "")}\n${toRender}\`\`\`\n`;
}, },
list: (children, { depth }) => list: (children, { depth }) =>
Bun.wrapAnsi( `${depth > 0 ? "\n" : ""}${children.trimEnd()}${depth === 0 ? "\n\n" : ""}`,
`${depth > 0 ? "\n" : ""}${children.trimEnd()}${depth === 0 ? "\n\n" : ""}`,
columns,
),
listItem: (children, { index, depth, ordered, start, checked }) => { listItem: (children, { index, depth, ordered, start, checked }) => {
const indent = " ".repeat(depth); const indent = " ".repeat(depth);
let marker = ""; let marker = "";
@ -92,19 +91,21 @@ export async function renderMarkdown(
} else { } else {
marker = "•"; marker = "•";
} }
return `${indent} ${marker} ${children}\n`; return Bun.wrapAnsi(`${indent} ${marker} ${children}\n`, columns, {
trim: false,
});
}, },
hr: () => `${chalk.dim("─".repeat(columns))}\n\n`, hr: () => `${chalk.dim("─".repeat(columns))}\n\n`,
table: (_children) => { table: (_children) => {
const table = new Table(); const table = new Table()
table.header(header); .header(header)
table.body(body); .body(body)
table.border(); .border()
table.maxColWidth(Math.floor(columns / header.length)); .maxColWidth(Math.floor(columns / header.length) - 2)
const toRender = table.toString(); .toString();
header = []; header = [];
body = []; body = [];
return `${toRender}\n\n`; return `${table}\n\n`;
}, },
tr: (children) => { tr: (children) => {
if (children) body.push(children.split(":tablesep:").slice(1)); if (children) body.push(children.split(":tablesep:").slice(1));