Z ZPI 文档 v0.3.8
介绍页

源码

packages/ui/src/components/markdown-table-text.ts

typescript22 行查看原文
export function tableMarkdown(rows: string[][]): string {
  if (!rows.length) return "";
  const columns = Math.max(...rows.map((row) => row.length), 1);
  const escaped = rows.map((row) =>
    Array.from({ length: columns }, (_, i) =>
      (row[i] ?? "").replace(/\\/g, "\\\\").replace(/\|/g, "\\|").replace(/\r?\n/g, "<br>"),
    ),
  );
  return [escaped[0], Array.from({ length: columns }, () => "---"), ...escaped.slice(1)]
    .map((row) => `| ${row.join(" | ")} |`)
    .join("\n");
}

export function tableCsv(rows: string[][]): string {
  const escapeCell = (value: string) => {
    // Spreadsheet applications interpret model-generated formula prefixes as executable cells.
    const text = /^[\t\r\n]|^\s*[=+\-@]/u.test(value) ? `'${value}` : value;
    return /[",\r\n]/u.test(text) ? `"${text.replace(/"/g, '""')}"` : text;
  };
  return `\uFEFF${rows.map((row) => row.map(escapeCell).join(",")).join("\r\n")}`;
}