was.js – Diff between revs 7 and 25
?pathlinks?
Rev 7 | Rev 25 | |||
---|---|---|---|---|
1 | /*************************************************************************/ |
1 | /*************************************************************************/ |
|
2 | /* Copyright (C) 2015 Wizardry and Steamworks - License: GNU GPLv3 */ |
2 | /* Copyright (C) 2015 Wizardry and Steamworks - License: GNU GPLv3 */ |
|
3 | /*************************************************************************/ |
3 | /*************************************************************************/ |
|
4 | function wasCSVToArray(csv) { |
4 | function wasCSVToArray(csv) { |
|
5 | var l = []; |
5 | var l = []; |
|
6 | var s = []; |
6 | var s = []; |
|
7 | var m = ""; |
7 | var m = ""; |
|
8 | |
8 | |
|
9 | do { |
9 | do { |
|
10 | var a = csv.charAt(0); |
10 | var a = csv.charAt(0); |
|
11 | csv = csv.slice(1, csv.length); |
11 | csv = csv.slice(1, csv.length); |
|
12 | if(a === ",") { |
12 | if(a === ",") { |
|
13 | if(s[s.length-1] !== '"') { |
13 | if(s[s.length-1] !== '"') { |
|
14 | l.push(m); |
14 | l.push(m); |
|
15 | m = ""; |
15 | m = ""; |
|
16 | continue; |
16 | continue; |
|
17 | } |
17 | } |
|
18 | m += a; |
18 | m += a; |
|
19 | continue; |
19 | continue; |
|
20 | } |
20 | } |
|
21 | if(a === '"' && csv.charAt(0) === a) { |
21 | if(a === '"' && csv.charAt(0) === a) { |
|
22 | m += a; |
22 | m += a; |
|
23 | csv = csv.slice(1, csv.length); |
23 | csv = csv.slice(1, csv.length); |
|
24 | continue; |
24 | continue; |
|
25 | } |
25 | } |
|
26 | if(a === '"') { |
26 | if(a === '"') { |
|
27 | if(s[s.length-1] !== a) { |
27 | if(s[s.length-1] !== a) { |
|
28 | s.push(a); |
28 | s.push(a); |
|
29 | continue; |
29 | continue; |
|
30 | } |
30 | } |
|
31 | s.pop(); |
31 | s.pop(); |
|
32 | continue; |
32 | continue; |
|
33 | } |
33 | } |
|
34 | m += a; |
34 | m += a; |
|
35 | } while(csv !== ""); |
35 | } while(csv !== ""); |
|
36 | |
36 | |
|
37 | l.push(m); |
37 | l.push(m); |
|
38 | |
38 | |
|
39 | return l; |
39 | return l; |
|
40 | } |
40 | } |
|
41 | |
41 | |
|
42 | /*************************************************************************/ |
42 | /*************************************************************************/ |
|
43 | /* Copyright (C) 2015 Wizardry and Steamworks - License: GNU GPLv3 */ |
43 | /* Copyright (C) 2015 Wizardry and Steamworks - License: GNU GPLv3 */ |
|
44 | /*************************************************************************/ |
44 | /*************************************************************************/ |
|
45 | function wasArrayToCSV(a) { |
45 | function wasArrayToCSV(a) { |
|
46 | var csv = []; |
46 | var csv = []; |
|
47 | for(var i=0; i<a.length; ++i) { |
47 | for(var i=0; i<a.length; ++i) { |
|
48 | var cell = a[i].toString().replace('"', '""'); |
48 | var cell = a[i].toString().replace('"', '""'); |
|
49 | if(/"\s,\r\n/.test(cell)) { |
49 | if(/"\s,\r\n/.test(cell)) { |
|
50 | csv[i] = '"' + cell + '"'; |
50 | csv[i] = '"' + cell + '"'; |
|
51 | continue; |
51 | continue; |
|
52 | } |
52 | } |
|
53 | csv[i] = cell; |
53 | csv[i] = cell; |
|
54 | } |
54 | } |
|
55 | return csv.join(); |
55 | return csv.join(); |
|
56 | } |
56 | } |
|
- | 57 | |
||
- | 58 | /*************************************************************************/ |
||
- | 59 | /* Node.JS package export. */ |
||
- | 60 | /*************************************************************************/ |
||
- | 61 | module.exports.formats.csv = { |
||
- | 62 | CSVToArray: wasCSVToArray, |
||
- | 63 | ArrayToCSV: wasArrayToCSV |
||
- | 64 | }; |
||
57 | |
65 | |
|
- | 66 |
|
||
- | 67 | |
||
- | 68 | |
||
- | 69 | |