summaryrefslogtreecommitdiffstats
path: root/js
diff options
context:
space:
mode:
authorTakayuki MATSUOKA <takayuki.matsuoka@gmail.com>2015-03-31 10:54:47 (GMT)
committerTakayuki MATSUOKA <takayuki.matsuoka@gmail.com>2015-03-31 10:54:47 (GMT)
commitc2b9fcd49b28693935c3c57b0f758c8f8ce4d664 (patch)
treed1927f80b8bb470aebd797f44beb04f96546e8a6 /js
parentf61a4ae73c904e69986fe14c6033abc0ab487bb6 (diff)
downloadlz4-c2b9fcd49b28693935c3c57b0f758c8f8ce4d664.zip
lz4-c2b9fcd49b28693935c3c57b0f758c8f8ce4d664.tar.gz
lz4-c2b9fcd49b28693935c3c57b0f758c8f8ce4d664.tar.bz2
Import csv-to-array
https://code.google.com/p/csv-to-array/
Diffstat (limited to 'js')
-rw-r--r--js/csvToArray.v2.1.js91
1 files changed, 91 insertions, 0 deletions
diff --git a/js/csvToArray.v2.1.js b/js/csvToArray.v2.1.js
new file mode 100644
index 0000000..850bbe4
--- /dev/null
+++ b/js/csvToArray.v2.1.js
@@ -0,0 +1,91 @@
+/* Copyright 2012-2013 Daniel Tillin
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * csvToArray v2.1 (Unminifiled for development)
+ *
+ * For documentation visit:
+ * http://code.google.com/p/csv-to-array/
+ *
+ */
+String.prototype.csvToArray = function (o) {
+ var od = {
+ 'fSep': ',',
+ 'rSep': '\r\n',
+ 'quot': '"',
+ 'head': false,
+ 'trim': false
+ }
+ if (o) {
+ for (var i in od) {
+ if (!o[i]) o[i] = od[i];
+ }
+ } else {
+ o = od;
+ }
+ var a = [
+ ['']
+ ];
+ for (var r = f = p = q = 0; p < this.length; p++) {
+ switch (c = this.charAt(p)) {
+ case o.quot:
+ if (q && this.charAt(p + 1) == o.quot) {
+ a[r][f] += o.quot;
+ ++p;
+ } else {
+ q ^= 1;
+ }
+ break;
+ case o.fSep:
+ if (!q) {
+ if (o.trim) {
+ a[r][f] = a[r][f].replace(/^\s\s*/, '').replace(/\s\s*$/, '');
+ }
+ a[r][++f] = '';
+ } else {
+ a[r][f] += c;
+ }
+ break;
+ case o.rSep.charAt(0):
+ if (!q && (!o.rSep.charAt(1) || (o.rSep.charAt(1) && o.rSep.charAt(1) == this.charAt(p + 1)))) {
+ if (o.trim) {
+ a[r][f] = a[r][f].replace(/^\s\s*/, '').replace(/\s\s*$/, '');
+ }
+ a[++r] = [''];
+ a[r][f = 0] = '';
+ if (o.rSep.charAt(1)) {
+ ++p;
+ }
+ } else {
+ a[r][f] += c;
+ }
+ break;
+ default:
+ a[r][f] += c;
+ }
+ }
+ if (o.head) {
+ a.shift()
+ }
+ if (a[a.length - 1].length < a[0].length) {
+ a.pop()
+ }
+ return a;
+} \ No newline at end of file