JSFiddle - React, Tailwind, and code Playground
JavaScript
function ascii_table(array, header) {
if (!array.length) {
return '';
}
var lengths = array[0].map(function(_, i) {
var col = array.map(function(row) {
if (row[i] != undefined) {
return row[i].length;
} else {
return 0;
}
});
return Math.max.apply(Math, col);
});
array = array.map(function(row, r) {
var cols = row.map(function(item, i){
return item.split("\n")
});
var maxH = (cols.reduce(function(i,j){return i.length > j.length ? i : j})).length;
console.log(r, maxH, cols);
var rowStr = "";
for (h=0;h<maxH;h++) {
rowStr += "| ";
for (c=0;c<cols.length;c++) {
if (c>0) rowStr += " | ";
var item = cols[c][h] || "";
var size = item.length;
if (size < lengths[c]) {
item += new Array(lengths[c]-size+1).join(' ');
}
rowStr += item;
}
rowStr += " |";
if (h<maxH-1) rowStr += "\n";
}
// return '| ' + row.map(function(item, i) {
// var size = item.length;
// if (size < lengths[i]) {
// item += new Array(lengths[i]-size+1).join(' ');
// }
// return item;
// }).join(' | ') + ' |';
return rowStr;
});
var sep = '+' + lengths.map(function(length) {
return new Array(length+3).join('-');
}).join('+') + '+';
if (header) {
return sep + '\n' + array[0] + '\n' + sep + '\n' +
...