UNPKG

@opengis/fastify-table

Version:

core-plugins

41 lines (33 loc) 1.88 kB
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 str = Object.keys(el).filter(el => el !== 'id').reduce((acc1, curr1) => handleData(el, curr1, acc1, {}, 1, 3), ''); return `\n - ${str}`; } return `\n - ${el}`; })}`; acc += `${str}`; return acc; } else 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, ','); };