summaryrefslogtreecommitdiff
path: root/www/lib/vis/examples/graph3d/playground/csv2array.js
diff options
context:
space:
mode:
authorPliable Pixels <pliablepixels@gmail.com>2017-09-21 12:49:18 -0400
committerPliable Pixels <pliablepixels@gmail.com>2017-09-21 12:49:18 -0400
commitb28028ac4082842143b0f528d6bc539da6ccb419 (patch)
tree1e26ea969a781ed8e323fca4e3c76345113fc694 /www/lib/vis/examples/graph3d/playground/csv2array.js
parent676270d21beed31d767a06c89522198c77d5d865 (diff)
mega changes, including updates and X
Diffstat (limited to 'www/lib/vis/examples/graph3d/playground/csv2array.js')
-rw-r--r--www/lib/vis/examples/graph3d/playground/csv2array.js120
1 files changed, 120 insertions, 0 deletions
diff --git a/www/lib/vis/examples/graph3d/playground/csv2array.js b/www/lib/vis/examples/graph3d/playground/csv2array.js
new file mode 100644
index 00000000..95d0c4a6
--- /dev/null
+++ b/www/lib/vis/examples/graph3d/playground/csv2array.js
@@ -0,0 +1,120 @@
+/**
+ * Convert data in CSV (comma separated value) format to a javascript array.
+ *
+ * Values are separated by a comma, or by a custom one character delimeter.
+ * Rows are separated by a new-line character.
+ *
+ * Leading and trailing spaces and tabs are ignored.
+ * Values may optionally be enclosed by double quotes.
+ * Values containing a special character (comma's, double-quotes, or new-lines)
+ * must be enclosed by double-quotes.
+ * Embedded double-quotes must be represented by a pair of consecutive
+ * double-quotes.
+ *
+ * Example usage:
+ * var csv = '"x", "y", "z"\n12.3, 2.3, 8.7\n4.5, 1.2, -5.6\n';
+ * var array = csv2array(csv);
+ *
+ * Author: Jos de Jong, 2010
+ *
+ * @param {string} data The data in CSV format.
+ * @param {string} delimeter [optional] a custom delimeter. Comma ',' by default
+ * The Delimeter must be a single character.
+ * @return {Array} array A two dimensional array containing the data
+ * @throw {String} error The method throws an error when there is an
+ * error in the provided data.
+ */
+function csv2array(data, delimeter) {
+ // Retrieve the delimeter
+ if (delimeter == undefined)
+ delimeter = ',';
+ if (delimeter && delimeter.length > 1)
+ delimeter = ',';
+
+ // initialize variables
+ var newline = '\n';
+ var eof = '';
+ var i = 0;
+ var c = data.charAt(i);
+ var row = 0;
+ var col = 0;
+ var array = new Array();
+
+ while (c != eof) {
+ // skip whitespaces
+ while (c == ' ' || c == '\t' || c == '\r') {
+ c = data.charAt(++i); // read next char
+ }
+
+ // get value
+ var value = "";
+ if (c == '\"') {
+ // value enclosed by double-quotes
+ c = data.charAt(++i);
+
+ do {
+ if (c != '\"') {
+ // read a regular character and go to the next character
+ value += c;
+ c = data.charAt(++i);
+ }
+
+ if (c == '\"') {
+ // check for escaped double-quote
+ var cnext = data.charAt(i+1);
+ if (cnext == '\"') {
+ // this is an escaped double-quote.
+ // Add a double-quote to the value, and move two characters ahead.
+ value += '\"';
+ i += 2;
+ c = data.charAt(i);
+ }
+ }
+ }
+ while (c != eof && c != '\"');
+
+ if (c == eof) {
+ throw "Unexpected end of data, double-quote expected";
+ }
+
+ c = data.charAt(++i);
+ }
+ else {
+ // value without quotes
+ while (c != eof && c != delimeter && c!= newline && c != ' ' && c != '\t' && c != '\r') {
+ value += c;
+ c = data.charAt(++i);
+ }
+ }
+
+ // add the value to the array
+ if (array.length <= row)
+ array.push(new Array());
+ array[row].push(value);
+
+ // skip whitespaces
+ while (c == ' ' || c == '\t' || c == '\r') {
+ c = data.charAt(++i);
+ }
+
+ // go to the next row or column
+ if (c == delimeter) {
+ // to the next column
+ col++;
+ }
+ else if (c == newline) {
+ // to the next row
+ col = 0;
+ row++;
+ }
+ else if (c != eof) {
+ // unexpected character
+ throw "Delimiter expected after character " + i;
+ }
+
+ // go to the next character
+ c = data.charAt(++i);
+ }
+
+ return array;
+}