Created
March 30, 2017 16:21
-
-
Save anabelle2001/ecda75080e5086bf9ea75c1051c3b37e to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//tableout.js -- Beau Vandenburgh | |
//converts an array of objects or a 2d array into a fancy spaced out table | |
//MIT liscence | |
function tableout (data,padding_val){ | |
if(+padding_val==NaN){ | |
console.info("The padding value (args[1]) is not a number, so it will default to 2. here's the trace:") | |
console.trace() | |
padding_val=2; | |
} | |
var resultstr=""; | |
if (!Array.isArray(data[0])) {//convert object to 2d array | |
var newdata=[]; | |
var keys=[]; | |
for (var key in data[0]) { | |
if (data[0].hasOwnProperty(key)) { | |
keys.push(key); | |
} | |
} | |
newdata[0]=keys; | |
for (var i = 0; i < data.length; i++) { | |
newdata[i+1]=[]; | |
for (var j = 0; j < keys.length; j++) { | |
newdata[i+1][j]=data[i][keys[j]]; | |
} | |
} | |
data = newdata; | |
} | |
for (var i = 0; i < data.length; i++) {//convert each value to string | |
for (var j = 0; j < data[i].length; j++) { | |
data[i][j]=""+data[i][j]; | |
} | |
} | |
var collumns = []; | |
for(var i = 0; i < data[0].length;i++){//collums coutns how many chars something is | |
collumns[i] = 0; | |
} | |
for (var row = 0; row < data.length; row++) {//find the length of each collumn | |
for (var cell = 0; cell < data[row].length; cell++) { | |
if (data[row][cell].length+padding_val > collumns[cell]){ | |
collumns[cell]=data[row][cell].length+padding_val; | |
} | |
} | |
} | |
for (var cell = 0; cell < data[0].length; cell++) { | |
resultstr+=data[0][cell]; | |
for (var j = 0; j < (collumns[cell]-data[0][cell].length); j++) { | |
resultstr+=" "; | |
} | |
} | |
for (var i = 1; i < data.length; i++) {//make the string | |
resultstr+="\n"; | |
for (var cell = 0; cell < data[i].length; cell++) { | |
resultstr+=data[i][cell]; | |
for (var j = 0; j < (collumns[cell]-data[i][cell].length); j++) { | |
resultstr+=" "; | |
} | |
} | |
} | |
return resultstr; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment