UNPKG

@opengis/fastify-table

Version:

core-plugins

46 lines (45 loc) 1.98 kB
/* eslint-disable no-param-reassign */ function handleData(data, curr, acc, titles, plain, splittype = 1) { const titleStr = { 1: `${titles?.[curr] || curr}\n`, // for lists 2: `${titles?.[curr] || curr}: `, // one-liner 3: "", // for nested lists w/ one property }[splittype]; if (Array.isArray(data[curr])) { const str = `${plain ? "" : "\n\n### "}${titleStr}${data[curr].map((el) => { if (typeof el === "object" && !Array.isArray(el)) { const str1 = Object.keys(el) .filter((item) => item !== "id") .reduce((acc1, curr1) => handleData(el, curr1, acc1, {}, 1, 3), ""); return `\n - ${str1}`; } return `\n - ${el}`; })}`; acc += `${str}`; return acc; } if (typeof data[curr] === "object") { const str = `${plain ? "" : "\n\n### "} ${titleStr}${JSON.stringify(data[curr])}`; acc += str; return acc; } acc += `${plain ? "" : "\n\n### "}${titleStr}${data[curr] || ""}`; return acc; } export default function formatMdoc(data, titles = {}, headerColumns = [], descriptionColumns = []) { if (!data) return "empty data"; if (typeof data !== "object" || Array.isArray(data)) return "invalid data"; if (headerColumns && !Array.isArray(headerColumns)) return "invalid headerColumns"; if (descriptionColumns && !Array.isArray(descriptionColumns)) return "invalid descriptionColumns"; const header = Object.keys(data) .filter((key) => headerColumns.includes(key) && data[key]) .reduce((acc, curr) => handleData(data, curr, acc, titles, 1, 2), ""); const description = Object.keys(data) .filter((key) => descriptionColumns.includes(key) && data[key]) .reduce((acc, curr) => handleData(data, curr, acc, titles), ""); return `---\n${header}\n---${description}`.replace(/,,/g, ","); }