mirror of
https://github.com/datahub-project/datahub.git
synced 2025-07-17 06:12:02 +00:00
84 lines
1.8 KiB
JavaScript
84 lines
1.8 KiB
JavaScript
"use strict";
|
|
|
|
/**
|
|
* 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 ) {
|
|
if( delimiter != "\t" ) {
|
|
csvContent = csvContent.replace(/\t/g, " ");
|
|
}
|
|
var columns = csvContent.split("\n");
|
|
|
|
var tabularData = [];
|
|
var maxRowLen = [];
|
|
|
|
columns.forEach(function( e, i ) {
|
|
if( typeof tabularData[i] == "undefined" ) {
|
|
tabularData[i] = [];
|
|
}
|
|
|
|
var row = e.split(delimiter);
|
|
|
|
row.forEach(function( ee, ii ) {
|
|
if( typeof maxRowLen[ii] == "undefined" ) {
|
|
maxRowLen[ii] = 0;
|
|
}
|
|
|
|
maxRowLen[ii] = Math.max(maxRowLen[ii], ee.length);
|
|
tabularData[i][ii] = ee;
|
|
});
|
|
});
|
|
|
|
var headerOutput = "";
|
|
var seperatorOutput = "";
|
|
|
|
maxRowLen.forEach(function( len ) {
|
|
var spacer;
|
|
spacer = Array(len + 1 + 2).join("-");
|
|
seperatorOutput += "|" + spacer;
|
|
|
|
spacer = Array(len + 1 + 2).join(" ");
|
|
headerOutput += "|" + spacer;
|
|
});
|
|
|
|
headerOutput += "| \n";
|
|
seperatorOutput += "| \n";
|
|
|
|
if( hasHeader ) {
|
|
headerOutput = "";
|
|
}
|
|
|
|
var rowOutput = "";
|
|
var initHeader = true;
|
|
tabularData.forEach(function( col ) {
|
|
maxRowLen.forEach(function( len, y ) {
|
|
var row = typeof col[y] == "undefined" ? "" : col[y];
|
|
var spacing = Array((len - row.length) + 1).join(" ");
|
|
|
|
if( hasHeader && initHeader ) {
|
|
headerOutput += "| " + row + spacing + " ";
|
|
} else {
|
|
rowOutput += "| " + row + spacing + " ";
|
|
}
|
|
});
|
|
|
|
if( hasHeader && initHeader ) {
|
|
headerOutput += "| \n";
|
|
} else {
|
|
rowOutput += "| \n";
|
|
}
|
|
|
|
initHeader = false;
|
|
});
|
|
|
|
return headerOutput + seperatorOutput + rowOutput;
|
|
}
|
|
|
|
if(typeof module != "undefined") {
|
|
module.exports = csvToMarkdown;
|
|
} |