csv-to-markdown-table
Version:
JavaScript/Node.js Csv to Markdown Table Converter
1 lines • 5.26 kB
Source Map (JSON)
{"version":3,"file":"CsvToMarkdown.mjs","sources":["../src/CsvToMarkdown.ts"],"sourcesContent":["/**\n * Converts CSV to Markdown Table\n *\n * @param {string} csvContent - The string content of the CSV\n * @param {string} delimiter - The character(s) to use as the CSV column delimiter\n * @param {boolean} hasHeader - Whether to use the first row of Data as headers\n * @returns {string}\n */\nexport default function csvToMarkdown(csvContent, delimiter, hasHeader) {\n if (delimiter === void 0) { delimiter = \"\\t\"; }\n if (hasHeader === void 0) { hasHeader = false; }\n if (delimiter != \"\\t\") {\n csvContent = csvContent.replace(/\\t/g, \" \");\n }\n var columns = csvContent.split(/\\r?\\n/);\n var tabularData = [];\n var maxRowLen = [];\n var regsafeDelimiter = delimiter.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n var regex = new RegExp(\"\".concat(regsafeDelimiter, \"(?![^\\\"]*\\\"(?:$|\").concat(regsafeDelimiter, \"))\"));\n columns.forEach(function (e, i) {\n if (typeof tabularData[i] == \"undefined\") {\n tabularData[i] = [];\n }\n var row = e.split(regex);\n row.forEach(function (ee, ii) {\n if (typeof maxRowLen[ii] == \"undefined\") {\n maxRowLen[ii] = 0;\n }\n // escape pipes and backslashes\n ee = ee.replace(/(\\||\\\\)/g, \"\\\\$1\");\n maxRowLen[ii] = Math.max(maxRowLen[ii], ee.length);\n tabularData[i][ii] = ee;\n });\n });\n var headerOutput = \"\";\n var seperatorOutput = \"\";\n maxRowLen.forEach(function (len) {\n var sizer = Array(len + 1 + 2);\n seperatorOutput += \"|\" + sizer.join(\"-\");\n headerOutput += \"|\" + sizer.join(\" \");\n });\n headerOutput += \"| \\n\";\n seperatorOutput += \"| \\n\";\n if (hasHeader) {\n headerOutput = \"\";\n }\n var rowOutput = \"\";\n tabularData.forEach(function (col, i) {\n maxRowLen.forEach(function (len, y) {\n var row = typeof col[y] == \"undefined\" ? \"\" : col[y];\n var spacing = Array((len - row.length) + 1).join(\" \");\n var out = \"| \".concat(row).concat(spacing, \" \");\n if (hasHeader && i === 0) {\n headerOutput += out;\n }\n else {\n rowOutput += out;\n }\n });\n if (hasHeader && i === 0) {\n headerOutput += \"| \\n\";\n }\n else {\n rowOutput += \"| \\n\";\n }\n });\n return \"\".concat(headerOutput).concat(seperatorOutput).concat(rowOutput);\n}\n"],"names":[],"mappings":"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"}