csv parser
by gaby de wilde
CSS
td,table{border:1px solid}
JavaScript
csv = String.raw`foo,bar,banana,baz,kiwi,orange
foobar,"baz\"
bar
boat","304,84",304,"0,84","0,84"
foobar,"bazbar","304,84",304,"0,84","0,84"
foobar,"b""azbar","304,84",304,"0,84","0,84"
foobar,bazbar,"304,84",304,"0,84","0,84"`;
// csv parser
rand =o=>Math.floor(Math.random()*100000000);
lineBreak = rand();
comma = rand();
escapedQuote1 = rand();
escapedQuote2 = rand();
csv = csv
.split('\\"')
.join(escapedQuote1)
.split('""')
.join(escapedQuote2)
.split('"');
for(x=1;x<csv.length;x+=2){
csv[x] = csv[x]
.split('\n')
.join(lineBreak)
.split(',')
.join(comma);
}
csv = csv
.join('')
.split('\n')
.map(function(row){
return row
.split(lineBreak)
.join('\n')
.split(',')
.map(function(cell){
return cell
.split(comma)
.join(',')
.split(escapedQuote1)
.join('\"')
.split(escapedQuote2)
.join('"');
});
});
htmlout = "";
csv.forEach(function(x){
htmlout += "<tr>";
x.forEach(function(z,m){
/* if you want to remove columns do it like so
if(m==0){return}
if(m==1){return}
if(m==2){return}
if(m==3){return}
if(m==4){return} */
htmlout += "<td>" + z + "</td>";
});
htmlout += "</tr>";
//}
});
document.body.innerHTML = "<table><tbody>" + htmlout + "</tbody></table>"