70 lines
5.3 KiB
JavaScript
70 lines
5.3 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.csvToMarkdown = void 0;
|
|
/**
|
|
* Converts CSV to Markdown Table
|
|
*
|
|
* @param {string} csvContent - The string content of the CSV
|
|
* @param {string} delimiter - The character(s) to use as the CSV column delimiter
|
|
* @param {boolean} hasHeader - Whether to use the first row of Data as headers
|
|
* @returns {string}
|
|
*/
|
|
function csvToMarkdown(csvContent, delimiter = ",", hasHeader = true) {
|
|
if (delimiter != "\t") {
|
|
csvContent = csvContent.replace(/\t/g, " ");
|
|
}
|
|
const columns = csvContent.split(/\r?\n/);
|
|
const tabularData = [];
|
|
const maxRowLen = [];
|
|
columns.forEach((e, i) => {
|
|
if (typeof tabularData[i] == "undefined") {
|
|
tabularData[i] = [];
|
|
}
|
|
const regex = new RegExp(delimiter + '(?![^"]*"\\B)');
|
|
const row = e.split(regex);
|
|
row.forEach((ee, ii) => {
|
|
if (typeof maxRowLen[ii] == "undefined") {
|
|
maxRowLen[ii] = 0;
|
|
}
|
|
// escape pipes and backslashes
|
|
ee = ee.replace(/(\||\\)/g, "\\$1");
|
|
maxRowLen[ii] = Math.max(maxRowLen[ii], ee.length);
|
|
tabularData[i][ii] = ee;
|
|
});
|
|
});
|
|
let headerOutput = "";
|
|
let seperatorOutput = "";
|
|
maxRowLen.forEach((len) => {
|
|
const sizer = Array(len + 1 + 2);
|
|
seperatorOutput += "|" + sizer.join("-");
|
|
headerOutput += "|" + sizer.join(" ");
|
|
});
|
|
headerOutput += "| \n";
|
|
seperatorOutput += "| \n";
|
|
if (hasHeader) {
|
|
headerOutput = "";
|
|
}
|
|
let rowOutput = "";
|
|
tabularData.forEach((col, i) => {
|
|
maxRowLen.forEach((len, y) => {
|
|
const row = typeof col[y] == "undefined" ? "" : col[y];
|
|
const spacing = Array((len - row.length) + 1).join(" ");
|
|
const out = `| ${row}${spacing} `;
|
|
if (hasHeader && i === 0) {
|
|
headerOutput += out;
|
|
}
|
|
else {
|
|
rowOutput += out;
|
|
}
|
|
});
|
|
if (hasHeader && i === 0) {
|
|
headerOutput += "| \n";
|
|
}
|
|
else {
|
|
rowOutput += "| \n";
|
|
}
|
|
});
|
|
return `\n\n ${headerOutput}${seperatorOutput}${rowOutput} \n\n`;
|
|
}
|
|
exports.csvToMarkdown = csvToMarkdown;
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3N2LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3BsdWdpbnMvY3N2LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBOzs7Ozs7O0dBT0c7QUFDRixTQUFnQixhQUFhLENBQUMsVUFBa0IsRUFBRSxZQUFvQixHQUFHLEVBQUUsWUFBcUIsSUFBSTtJQUNqRyxJQUFJLFNBQVMsSUFBSSxJQUFJLEVBQUU7UUFDbkIsVUFBVSxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBQ2xEO0lBRUQsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUUxQyxNQUFNLFdBQVcsR0FBZSxFQUFFLENBQUM7SUFDbkMsTUFBTSxTQUFTLEdBQWEsRUFBRSxDQUFDO0lBRS9CLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDckIsSUFBSSxPQUFPLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxXQUFXLEVBQUU7WUFDdEMsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztTQUN2QjtRQUNELE1BQU0sS0FBSyxHQUFHLElBQUksTUFBTSxDQUFDLFNBQVMsR0FBRyxlQUFlLENBQUMsQ0FBQztRQUN0RCxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNCLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7WUFDbkIsSUFBSSxPQUFPLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxXQUFXLEVBQUU7Z0JBQ3JDLFNBQVMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDckI7WUFFRCwrQkFBK0I7WUFDL0IsRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBRXBDLFNBQVMsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbkQsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxZQUFZLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLElBQUksZUFBZSxHQUFHLEVBQUUsQ0FBQztJQUV6QixTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7UUFDdEIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFakMsZUFBZSxJQUFJLEdBQUcsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pDLFlBQVksSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxQyxDQUFDLENBQUMsQ0FBQztJQUVILFlBQVksSUFBSSxNQUFNLENBQUM7SUFDdkIsZUFBZSxJQUFJLE1BQU0sQ0FBQztJQUUxQixJQUFJLFNBQVMsRUFBRTtRQUNYLFlBQVksR0FBRyxFQUFFLENBQUM7S0FDckI7SUFFRCxJQUFJLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDbkIsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUMzQixTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3pCLE1BQU0sR0FBRyxHQUFHLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkQsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDeEQsTUFBTSxHQUFHLEdBQUcsS0FBSyxHQUFHLEdBQUcsT0FBTyxHQUFHLENBQUM7WUFDbEMsSUFBSSxTQUFTLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDdEIsWUFBWSxJQUFJLEdBQUcsQ0FBQzthQUN2QjtpQkFBTTtnQkFDSCxTQUFTLElBQUksR0FBRyxDQUFDO2FBQ3BCO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLFNBQVMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3RCLFlBQVksSUFBSSxNQUFNLENBQUM7U0FDMUI7YUFBTTtZQUNILFNBQVMsSUFBSSxNQUFNLENBQUM7U0FDdkI7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sUUFBUSxZQUFZLEdBQUcsZUFBZSxHQUFHLFNBQVMsT0FBTyxDQUFDO0FBQ3JFLENBQUM7QUFuRUEsc0NBbUVBIn0=
|