JSFiddle - React, Tailwind, and code Playground
by namuol
HTML
<table id='wat'>
</table>
CSS
td, th {
padding: 2px;
border: 1px solid black;
}
CoffeeScript
# This will parse a delimited string into an array of
# arrays. The default delimiter is the comma, but this
# can be overriden in the second argument.
CSVToArray = (strData, strDelimiter) ->
# Check to see if the delimiter is defined. If not,
# then default to comma.
strDelimiter = (strDelimiter or ",")
# Create a regular expression to parse the CSV values.
# Delimiters.
# Quoted fields.
# Standard fields.
objPattern = new RegExp(("(\\" + strDelimiter + "|\\r?\\n|\\r|^)" + "(?:\"([^\"]*(?:\"\"[^\"]*)*)\"|" + "([^\"\\" + strDelimiter + "\\r\\n]*))"), "gi")
# Create an array to hold our data. Give the array
# a default empty first row.
arrData = [ [] ]
# Create an array to hold our individual pattern
# matching groups.
arrMatches = null
# Keep looping over the regular expression matches
# until we can no longer find a match.
while arrMatches = objPattern.exec(strData)
# Get the delimiter that was found.
strMatchedDelimiter = arrMatches[1]
# Check to see if the given delimiter has a length
# (is not the start of string) and if it matches
# field delimiter. If id does not, then we know
# that this delimiter is a row delimiter.
# Since we have reached a new row of data,
# add an empty row to our data array.
arrData.push [] if strMatchedDelimiter.length and (strMatchedDelimiter isnt strDelimiter)
# Now that we have our delimiter out of the way,
# let's check to see which kind of value we
# captured (quoted or unquoted).
if arrMatches[2]
# We found a quoted value. When we capture
# this value, unescape any double quotes.
strMatchedValue = arrMatches[2].replace(new RegExp("\"\"", "g"), "\"")
else
# We found a non-quoted value.
strMatchedValue = arrMatches[3]
# Now that we have our value string, let's add
# it to the data array.
arrData[arrData.length - 1].push strMatchedValue
...