Files
rappaurio-sae501_502/app/node_modules/cejs/_documents/JsDoc/symbols/src/D__USB_cgi-bin_lib_JS_data_CSV.origin.js.html
2023-09-25 13:27:24 +02:00

321 lines
54 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<html><head><meta http-equiv="content-type" content="text/html; charset=UTF-8"> <style>
.KEYW {color: #933;}
.COMM {color: #bbb; font-style: italic;}
.NUMB {color: #393;}
.STRN {color: #393;}
.REGX {color: #339;}
.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
</style></head><body><pre><span class='line'> 1</span> <span class="TOKN"></span><span class="WHIT">
<span class='line'> 2</span> </span><span class="COMM">/**
<span class='line'> 3</span> * @name CeL function for CSV data
<span class='line'> 4</span> * @fileoverview
<span class='line'> 5</span> * 本檔案包含了處理 CSV data 的 functions。
<span class='line'> 6</span> * @since
<span class='line'> 7</span> */</span><span class="WHIT">
<span class='line'> 8</span>
<span class='line'> 9</span>
<span class='line'> 10</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">CeL</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'function'</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'> 11</span> </span><span class="NAME">CeL.setup_module</span><span class="PUNC">(</span><span class="STRN">'data.CSV'</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'> 12</span> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">library_namespace</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">load_arguments</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 13</span>
<span class='line'> 14</span> </span><span class="COMM">// nothing required</span><span class="WHIT">
<span class='line'> 15</span>
<span class='line'> 16</span>
<span class='line'> 17</span>
<span class='line'> 18</span> </span><span class="COMM">/**
<span class='line'> 19</span> * null module constructor
<span class='line'> 20</span> * @class CSV data 的 functions
<span class='line'> 21</span> */</span><span class="WHIT">
<span class='line'> 22</span> </span><span class="NAME">CeL.data.CSV</span><span class="WHIT">
<span class='line'> 23</span> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 24</span> </span><span class="WHIT"> </span><span class="COMM">// null module constructor</span><span class="WHIT">
<span class='line'> 25</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 26</span>
<span class='line'> 27</span> </span><span class="COMM">/**
<span class='line'> 28</span> * for JSDT: 有 prototype 才會將之當作 Class
<span class='line'> 29</span> */</span><span class="WHIT">
<span class='line'> 30</span> </span><span class="NAME">CeL.data.CSV</span><span class="WHIT">
<span class='line'> 31</span> </span><span class="PUNC">.</span><span class="NAME">prototype</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 32</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 33</span>
<span class='line'> 34</span>
<span class='line'> 35</span>
<span class='line'> 36</span>
<span class='line'> 37</span>
<span class='line'> 38</span> </span><span class="COMM">/*
<span class='line'> 39</span>
<span class='line'> 40</span> TODO:
<span class='line'> 41</span> 可一筆一筆處理,不佔記憶體。
<span class='line'> 42</span> DoEvents
<span class='line'> 43</span>
<span class='line'> 44</span> http://hax.pie4.us/2009/05/lesson-of-regexp-50x-faster-with-just.html
<span class='line'> 45</span> GetKeywords: function(str) {
<span class='line'> 46</span> o: return '\\b(' + str.replace(/\s+/g, '|') + ')\\b';
<span class='line'> 47</span> x: return '\\b' + str.replace(/\s+/g, '\\b|\\b') + '\\b';
<span class='line'> 48</span> },
<span class='line'> 49</span>
<span class='line'> 50</span>
<span class='line'> 51</span> http://www.jsdb.org/
<span class='line'> 52</span> jsdb.from_array
<span class='line'> 53</span> jsdb.from_CSV
<span class='line'> 54</span> jsdb.from_CSV_file
<span class='line'> 55</span> jsdb.select=function(
<span class='line'> 56</span> field // [1,0,1,1,1] || '1010100' || 'a,b,c,d' || {a:0,b:1,c:1}
<span class='line'> 57</span> ,where // function(o={a:,b:,c:}){..;return select;} || {a:3} || {a:function(a){..;return select;}} || {a://} || {op:'a&&b||c',a:[3,4,6,11],b:[4,5,6],c:32}
<span class='line'> 58</span> )
<span class='line'> 59</span> jsdb.concat(table1, table2, id filed/[id fileds] = auto detect)
<span class='line'> 60</span> jsdb.from_HTML_TABLE(data,for_every_cell)
<span class='line'> 61</span> jsdb.transpose // 轉置
<span class='line'> 62</span> jsdb.to_CSV
<span class='line'> 63</span> jsdb.to_HTML_TABLE
<span class='line'> 64</span> jsdb.to_array(row_first)
<span class='line'> 65</span> jsdb.to_object(row_first)
<span class='line'> 66</span>
<span class='line'> 67</span> */</span><span class="WHIT">
<span class='line'> 68</span>
<span class='line'> 69</span> </span><span class="NAME">CeL.data.CSV</span><span class="WHIT">
<span class='line'> 70</span> </span><span class="PUNC">.</span><span class="WHIT">
<span class='line'> 71</span> </span><span class="COMM">/**
<span class='line'> 72</span> * parse CSV data to JSON 讀入 CSV 檔
<span class='line'> 73</span> * @param {String} _t CSV text data
<span class='line'> 74</span> * @param {Boolean} doCheck check if data is valid
<span class='line'> 75</span> * @param {Boolean} hasTitle there's a title line
<span class='line'> 76</span> * @return {Array} [ [L1_1,L1_2,..], [L2_1,L2_2,..],.. ]
<span class='line'> 77</span> * @memberOf CeL.data.CSV
<span class='line'> 78</span> * @example
<span class='line'> 79</span> * // to use:
<span class='line'> 80</span> * var data=parse_CSV('~');
<span class='line'> 81</span> * data[_line_][_field_]
<span class='line'> 82</span> *
<span class='line'> 83</span> * // hasTitle:
<span class='line'> 84</span> * var data = parse_CSV('~',0,1);
<span class='line'> 85</span> * //data[_line_][data.t[_title_]]
<span class='line'> 86</span> *
<span class='line'> 87</span> * // then:
<span class='line'> 88</span> * data.tA = title line
<span class='line'> 89</span> * data.t[_field_name_] = field number of title
<span class='line'> 90</span> * data.it = ignored title array
<span class='line'> 91</span> * data[num] = the num-th line (num: 0,1,2,..)
<span class='line'> 92</span> * @see
<span class='line'> 93</span> * &lt;a href="http://www.jsdb.org/" accessdate="2010/1/1 0:53">JSDB: JavaScript for databases&lt;/a>,
<span class='line'> 94</span> * &lt;a href="http://hax.pie4.us/2009/05/lesson-of-regexp-50x-faster-with-just.html" accessdate="2010/1/1 0:53">John Hax: A lesson of RegExp: 50x faster with just one line patch&lt;/a>
<span class='line'> 95</span> */</span><span class="WHIT">
<span class='line'> 96</span> </span><span class="NAME">parse_CSV</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">_t</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">doCheck</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">hasTitle</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 97</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">_t</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="REGX">/[^\n]/</span><span class="PUNC">.</span><span class="NAME">test</span><span class="PUNC">(</span><span class="NAME">_t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_t.replace</span><span class="PUNC">(</span><span class="REGX">/\r\n?/g</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'\n'</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'> 98</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 99</span> </span><span class="WHIT"> </span><span class="COMM">//_t+=_t.slice(-1)!='\n\n'?'\n':'\n';//if(_t.slice(-1)!='\n')_t+='\n';//if(!/\n/.test(_t))_t+='\n'; // 後面一定要[\n]是bug?</span><span class="WHIT">
<span class='line'>100</span>
<span class='line'>101</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">_f</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">arguments.callee</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">_r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">_a</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">_b</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">_i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">_m</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_f.fd</span><span class="WHIT">
<span class='line'>102</span>
<span class='line'>103</span> </span><span class="COMM">/*
<span class='line'>104</span> Here is a workaround for Opera 10.00 alpha build 1139 bug
<span class='line'>105</span>
<span class='line'>106</span> '\u10a0'.match(/[^\u10a1]+/)
<span class='line'>107</span> and
<span class='line'>108</span> '\u10a0'.match(/[^"]+/)
<span class='line'>109</span> gives different result.
<span class='line'>110</span> The latter should '\u10a0' but it gives null.
<span class='line'>111</span>
<span class='line'>112</span> But
<span class='line'>113</span> '\u10a0'.match(/[^"\u109a]+/)
<span class='line'>114</span> works.
<span class='line'>115</span>
<span class='line'>116</span> */</span><span class="WHIT">
<span class='line'>117</span> </span><span class="WHIT"> </span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'\u10a0'</span><span class="PUNC">.</span><span class="NAME">match</span><span class="PUNC">(</span><span class="REGX">/[^"]+/</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="STRN">''</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'\u109a'</span><span class="WHIT">
<span class='line'>118</span> </span><span class="WHIT"> </span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>119</span>
<span class='line'>120</span>
<span class='line'>121</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">_m</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'((|[^'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">_f.td</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">_m</span><span class="WHIT">
<span class='line'>122</span> </span><span class="WHIT"> </span><span class="COMM">// +c: for Opera bug</span><span class="WHIT">
<span class='line'>123</span> </span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT">
<span class='line'>124</span> </span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'\\n][^'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">_m</span><span class="WHIT">
<span class='line'>125</span> </span><span class="WHIT"> </span><span class="COMM">// +c: for Opera bug</span><span class="WHIT">
<span class='line'>126</span> </span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT">
<span class='line'>127</span> </span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'\\n]*'</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">_i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT">
<span class='line'>128</span> </span><span class="WHIT"> </span><span class="COMM">// 這裡不加 _f.td 可以 parse 更多狀況</span><span class="WHIT">
<span class='line'>129</span> </span><span class="WHIT"> </span><span class="NAME">_f.td.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">_i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>130</span> </span><span class="WHIT"> </span><span class="NAME">_a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_f.td.charAt</span><span class="PUNC">(</span><span class="NAME">_i</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">_b</span><span class="PUNC">[</span><span class="NAME">_a</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">RegExp</span><span class="PUNC">(</span><span class="NAME">_a</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">_a</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'g'</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">_m</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'|'</span><span class="WHIT">
<span class='line'>131</span> </span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">_a</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'(([^'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">_a</span><span class="WHIT">
<span class='line'>132</span> </span><span class="WHIT"> </span><span class="COMM">// +c: for Opera bug</span><span class="WHIT">
<span class='line'>133</span> </span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT">
<span class='line'>134</span> </span><span class="WHIT"> </span><span class="COMM">// 不用 [^'+_a+']+| 快很多</span><span class="WHIT">
<span class='line'>135</span> </span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">']|'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">_a</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">_a</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'|\\n)*)'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">_a</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>136</span> </span><span class="WHIT"> </span><span class="NAME">_m</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">')['</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">_f.fd</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'\\n])'</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>137</span> </span><span class="COMM">/*
<span class='line'>138</span> _m=
<span class='line'>139</span> '((|[^\'"'+_m+'\\n][^'+_m+'\\n]*|"((""|[^"]|\\n)*)"|\'((\'\'|[^\']|\\n)*)\')['+_m+'\\n])'
<span class='line'>140</span> '((|[^\'"'+_m+'\\n$][^'+_m+'\\n$]*|"((""|[^"]|\\n)*)"|\'((\'\'|[^\']|\\n)*)\')['+_m+'\\n$])'
<span class='line'>141</span> _a='((|[^"\''+_f.fd+'\\n][^'+_f.fd+'\\n]*|"((""|[^"]|\\n)*)"|\'((\'\'|[^\']|\\n)*)\')['+_f.fd+'\\n])',alert(_m+'\n'+_a+'\n'+(_m==_a));
<span class='line'>142</span> */</span><span class="WHIT">
<span class='line'>143</span> </span><span class="WHIT"> </span><span class="COMM">//alert( 'now:\n' + new RegExp(_m,'g').source + '\n\nfull:\n' + /((|[^'",;\t\n$][^,;\t\n$]*|'((''|[^']|\n)*)'|"((""|[^"]|\n)*)")[,;\t\n$])/.source);</span><span class="WHIT">
<span class='line'>144</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">doCheck</span><span class="WHIT">
<span class='line'>145</span> </span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">RegExp</span><span class="PUNC">(</span><span class="STRN">'^('</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">_m</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">')+$'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">test</span><span class="PUNC">(</span><span class="NAME">_t.slice</span><span class="PUNC">(</span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'\n'</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">_t</span><span class="WHIT">
<span class='line'>146</span> </span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">_t</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'\n'</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>147</span> </span><span class="WHIT"> </span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Error</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"parse_CSV(): Can't parse data!\npattern: /^"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">_m</span><span class="WHIT">
<span class='line'>148</span> </span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"$/g"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>149</span>
<span class='line'>150</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">_a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">_i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">_m</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">_t.slice</span><span class="PUNC">(</span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'\n'</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">_t</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">_t</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'\n'</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>151</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">match</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">RegExp</span><span class="PUNC">(</span><span class="NAME">_m</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'g'</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">_i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">_m.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">_i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>152</span> </span><span class="WHIT"> </span><span class="NAME">_a.push</span><span class="PUNC">(</span><span class="NAME">_b</span><span class="PUNC">[</span><span class="NAME">_t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_m</span><span class="PUNC">[</span><span class="NAME">_i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">charAt</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">_m</span><span class="PUNC">[</span><span class="NAME">_i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">slice</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">replace</span><span class="PUNC">(</span><span class="NAME">_b</span><span class="PUNC">[</span><span class="NAME">_t</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>153</span> </span><span class="WHIT"> </span><span class="NAME">_t</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">_m</span><span class="PUNC">[</span><span class="NAME">_i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">slice</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>154</span> </span><span class="WHIT"> </span><span class="COMM">//alert('['+_i+'] '+_m[_i]+'|\n'+_a.slice(-1));</span><span class="WHIT">
<span class='line'>155</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">_m</span><span class="PUNC">[</span><span class="NAME">_i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">slice</span><span class="PUNC">(</span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'\n'</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>156</span> </span><span class="WHIT"> </span><span class="NAME">_r.push</span><span class="PUNC">(</span><span class="NAME">_a</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">_a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>157</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>158</span> </span><span class="WHIT"> </span><span class="COMM">//if(_a.length)_r.push(_a);</span><span class="WHIT">
<span class='line'>159</span>
<span class='line'>160</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">hasTitle</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'undefined'</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>161</span> </span><span class="WHIT"> </span><span class="NAME">hasTitle</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_f.hasTitle</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">_f.hasTitle</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>162</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">hasTitle</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>163</span> </span><span class="WHIT"> </span><span class="COMM">// ignored title array</span><span class="WHIT">
<span class='line'>164</span> </span><span class="WHIT"> </span><span class="NAME">_r.it</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>165</span> </span><span class="WHIT"> </span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">_a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_r.shift</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">_a.length</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">_r</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">length</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>166</span> </span><span class="WHIT"> </span><span class="COMM">// 預防 title 有許多行</span><span class="WHIT">
<span class='line'>167</span> </span><span class="WHIT"> </span><span class="NAME">_r.it.push</span><span class="PUNC">(</span><span class="NAME">_a</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>168</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">_r.tA</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_a</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">_b</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_r.t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">_i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">_i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">_a.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">_i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>169</span> </span><span class="WHIT"> </span><span class="NAME">_b</span><span class="PUNC">[</span><span class="NAME">_a</span><span class="PUNC">[</span><span class="NAME">_i</span><span class="PUNC">]</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">_i</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>170</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>171</span>
<span class='line'>172</span> </span><span class="WHIT"> </span><span class="COMM">// _r=[ [L1_1,L1_2,..], [L2_1,L2_2,..],.. ]</span><span class="WHIT">
<span class='line'>173</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">_r</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>174</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>175</span>
<span class='line'>176</span> </span><span class="NAME">CeL.data.CSV</span><span class="WHIT">
<span class='line'>177</span> </span><span class="PUNC">.</span><span class="WHIT">
<span class='line'>178</span> </span><span class="COMM">/**
<span class='line'>179</span> * field delimiter
<span class='line'>180</span> */</span><span class="WHIT">
<span class='line'>181</span> </span><span class="NAME">parse_CSV.fd</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'\\t,;'</span><span class="PUNC">;</span><span class="COMM">// :\s</span><span class="WHIT">
<span class='line'>182</span> </span><span class="NAME">CeL.data.CSV</span><span class="WHIT">
<span class='line'>183</span> </span><span class="PUNC">.</span><span class="WHIT">
<span class='line'>184</span> </span><span class="COMM">/**
<span class='line'>185</span> * text delimiter
<span class='line'>186</span> */</span><span class="WHIT">
<span class='line'>187</span> </span><span class="NAME">parse_CSV.td</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'"\''</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>188</span> </span><span class="COMM">//_.parse_CSV.ld line delimiter: only \n, \r will be ignored.</span><span class="WHIT">
<span class='line'>189</span> </span><span class="NAME">CeL.data.CSV</span><span class="WHIT">
<span class='line'>190</span> </span><span class="PUNC">.</span><span class="WHIT">
<span class='line'>191</span> </span><span class="COMM">/**
<span class='line'>192</span> * auto detect.. no title
<span class='line'>193</span> */</span><span class="WHIT">
<span class='line'>194</span> </span><span class="NAME">parse_CSV.hasTitle</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>195</span> </span><span class="COMM">//_.parse_CSV.title_word='t'; // data[parse_CSV.title_word]=title row array</span><span class="WHIT">
<span class='line'>196</span> </span><span class="COMM">//_.parse_CSV.fd=';',parse_CSV.td='"',alert(parse_CSV('"dfdf\nsdff";"sdf""sadf\n""as""dfsdf";sdfsadf;"dfsdfdf""dfsadf";sfshgjk',1).join('\n'));WScript.Quit();</span><span class="WHIT">
<span class='line'>197</span>
<span class='line'>198</span>
<span class='line'>199</span>
<span class='line'>200</span> </span><span class="COMM">// 2007/8/6 17:53:57-22:11:22</span><span class="WHIT">
<span class='line'>201</span>
<span class='line'>202</span> </span><span class="COMM">/*
<span class='line'>203</span> test:
<span class='line'>204</span> 'dfgdfg,"fgd",dfg'
<span class='line'>205</span> 'dfgdfg,"fgd",dfg'
<span class='line'>206</span>
<span class='line'>207</span> 'sdfsdf','ssdfdf'',''sdf'
<span class='line'>208</span>
<span class='line'>209</span> */</span><span class="WHIT">
<span class='line'>210</span> </span><span class="COMM">/**
<span class='line'>211</span> * 讀入CSV檔&lt;br/>
<span class='line'>212</span> * !! slow !!
<span class='line'>213</span> * @since 2007/8/6 17:53:57-22:11:22
<span class='line'>214</span> * @see 可參考 JKL.ParseXML.CSV.prototype.parse_CSV 2007/11/4 15:49:4
<span class='line'>215</span> * @deprecated 廢棄: use parse_CSV() instead
<span class='line'>216</span> * @param FP file path
<span class='line'>217</span> * @param FD field delimiter([,;: ]|\s+)
<span class='line'>218</span> * @param TD text delimiter['"]
<span class='line'>219</span> * @param hasTitle the data has a title line
<span class='line'>220</span> * @return Array contains data
<span class='line'>221</span> */</span><span class="WHIT">
<span class='line'>222</span> </span><span class="COMM">//readCSVdata[generateCode.dLK]='autodetectEncode,simpleRead,simpleFileAutodetectEncode';</span><span class="WHIT">
<span class='line'>223</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">readCSVdata</span><span class="PUNC">(</span><span class="NAME">FP</span><span class="PUNC">,</span><span class="NAME">FD</span><span class="PUNC">,</span><span class="NAME">TD</span><span class="PUNC">,</span><span class="NAME">hasTitle</span><span class="PUNC">,</span><span class="NAME">enc</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>224</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="PUNC">=</span><span class="NAME">simpleRead</span><span class="PUNC">(</span><span class="NAME">FP</span><span class="PUNC">,</span><span class="NAME">enc</span><span class="PUNC">||</span><span class="NAME">simpleFileAutodetectEncode</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">replace</span><span class="PUNC">(</span><span class="REGX">/^[\r\n\s]+/</span><span class="PUNC">,</span><span class="STRN">''</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="NAME">r</span><span class="PUNC">=</span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="NAME">reg</span><span class="PUNC">=</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>225</span> </span><span class="WHIT"> </span><span class="STRN">'"'</span><span class="PUNC">:</span><span class="REGX">/"?(([^"]+|"")+)"?([,;: ]|[ \r\n]+)/g</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>226</span> </span><span class="WHIT"> </span><span class="STRN">"'"</span><span class="PUNC">:</span><span class="REGX">/'?(([^']+|'')+)'?([,;: ]|[ \r\n]+)/g</span><span class="WHIT">
<span class='line'>227</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>228</span> </span><span class="WHIT"> </span><span class="COMM">// detect delimiter</span><span class="WHIT">
<span class='line'>229</span> </span><span class="COMM">/*
<span class='line'>230</span> if(!FD||!TD){
<span class='line'>231</span> var a,b,i=0,F='[,;: \s]',T='[\'"]',r=new RegExp('(^'+(TD||T)+'|('+(TD||T)+')('+(FD||F)+')('+(TD||T)+')|'+(TD||T)+'$)','g');
<span class='line'>232</span> F={},T={};
<span class='line'>233</span> try{
<span class='line'>234</span> t.replace(/(^['"]|(['"])([,;: \s])(['"])|['"]$)/g,function($0,$1,$2,$3,$4){
<span class='line'>235</span> if(!$2)T[$0]=(T[$0]||0)+1;
<span class='line'>236</span> else if($2==$4)T[$2]=(T[$2]||0)+1,F[$3]=(F[$3]||0)+1;
<span class='line'>237</span> if(i++>20)break;
<span class='line'>238</span> return $0;
<span class='line'>239</span> });
<span class='line'>240</span> }catch(e){}
<span class='line'>241</span> if(!FD){a=b=0;for(i in F)if(F[i]>a)a=F[b=i];FD=b;}
<span class='line'>242</span> if(!TD){a=b=0;for(i in T)if(T[i]>a)a=T[b=i];TD=b;}
<span class='line'>243</span> }
<span class='line'>244</span> */</span><span class="WHIT">
<span class='line'>245</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">TD</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>246</span> </span><span class="WHIT"> </span><span class="NAME">l</span><span class="PUNC">=</span><span class="NAME">t.indexOf</span><span class="PUNC">(</span><span class="STRN">'\n'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>247</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">l</span><span class="PUNC">==</span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="NAME">t.indexOf</span><span class="PUNC">(</span><span class="STRN">'\r'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>248</span> </span><span class="WHIT"> </span><span class="NAME">l</span><span class="PUNC">=</span><span class="PUNC">(</span><span class="NAME">l</span><span class="PUNC">==</span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">?</span><span class="NAME">t</span><span class="PUNC">:</span><span class="NAME">t.slice</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="NAME">l</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>249</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">l.replace</span><span class="PUNC">(</span><span class="NAME">reg</span><span class="PUNC">[</span><span class="STRN">'"'</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="STRN">''</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="NAME">TD</span><span class="PUNC">=</span><span class="STRN">'"'</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>250</span> </span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">l.replace</span><span class="PUNC">(</span><span class="NAME">reg</span><span class="PUNC">[</span><span class="STRN">"'"</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="STRN">''</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="NAME">TD</span><span class="PUNC">=</span><span class="STRN">"'"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>251</span> </span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>252</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>253</span> </span><span class="WHIT"> </span><span class="NAME">reg</span><span class="PUNC">=</span><span class="NAME">reg</span><span class="PUNC">[</span><span class="NAME">TD</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>254</span>
<span class='line'>255</span> </span><span class="WHIT"> </span><span class="NAME">l</span><span class="PUNC">=</span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">hasTitle</span><span class="PUNC">)</span><span class="NAME">r.length</span><span class="PUNC">=</span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>256</span> </span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">t</span><span class="PUNC">+</span><span class="STRN">'\n'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">replace</span><span class="PUNC">(</span><span class="NAME">reg</span><span class="PUNC">,</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">$0</span><span class="PUNC">,</span><span class="NAME">$1</span><span class="PUNC">,</span><span class="NAME">$2</span><span class="PUNC">,</span><span class="NAME">$3</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>257</span> </span><span class="WHIT"> </span><span class="NAME">l.push</span><span class="PUNC">(</span><span class="NAME">$1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>258</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="REGX">/\r\n/</span><span class="PUNC">.</span><span class="NAME">test</span><span class="PUNC">(</span><span class="NAME">$3</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="NAME">r.push</span><span class="PUNC">(</span><span class="NAME">l</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="NAME">l</span><span class="PUNC">=</span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>259</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>260</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>261</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">hasTitle</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>262</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="PUNC">(</span><span class="NAME">l</span><span class="PUNC">=</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="NAME">r.t</span><span class="PUNC">=</span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="NAME">l</span><span class="PUNC">&lt;</span><span class="NAME">r</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">length</span><span class="PUNC">;</span><span class="NAME">l</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="NAME">r.t</span><span class="PUNC">[</span><span class="NAME">r</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">[</span><span class="NAME">l</span><span class="PUNC">]</span><span class="PUNC">]</span><span class="PUNC">=</span><span class="NAME">l</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>263</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">r</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>264</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>265</span>
<span class='line'>266</span>
<span class='line'>267</span> </span><span class="NAME">toCSV.fd</span><span class="PUNC">=</span><span class="STRN">','</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// field delimiter</span><span class="WHIT">
<span class='line'>268</span> </span><span class="NAME">toCSV.td</span><span class="PUNC">=</span><span class="STRN">'"'</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// text delimiter</span><span class="WHIT">
<span class='line'>269</span> </span><span class="NAME">toCSV.force_td</span><span class="PUNC">=</span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// 是否強制加上 text delimiter</span><span class="WHIT">
<span class='line'>270</span> </span><span class="NAME">toCSV.ld</span><span class="PUNC">=</span><span class="STRN">'\n'</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// line delimiter</span><span class="WHIT">
<span class='line'>271</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">toCSV</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">,</span><span class="NAME">title</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>272</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">CSV</span><span class="PUNC">=</span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="NAME">_f</span><span class="PUNC">=</span><span class="NAME">arguments.callee</span><span class="PUNC">,</span><span class="NAME">s</span><span class="PUNC">,</span><span class="NAME">r</span><span class="PUNC">,</span><span class="NAME">td</span><span class="PUNC">=</span><span class="NAME">_f.td</span><span class="PUNC">,</span><span class="NAME">a</span><span class="PUNC">=</span><span class="NAME">td</span><span class="PUNC">,</span><span class="NAME">i</span><span class="PUNC">=</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="NAME">t</span><span class="PUNC">=</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">t</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>273</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">=</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="NAME">l</span><span class="PUNC">=</span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>274</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="PUNC">(</span><span class="PUNC">;</span><span class="NAME">i</span><span class="PUNC">&lt;</span><span class="NAME">t.length</span><span class="PUNC">;</span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>275</span> </span><span class="WHIT"> </span><span class="NAME">l.push</span><span class="PUNC">(</span><span class="NAME">s</span><span class="PUNC">&&</span><span class="NAME">s.test</span><span class="PUNC">(</span><span class="NAME">t</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">?</span><span class="NAME">t</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">replace</span><span class="PUNC">(</span><span class="NAME">r</span><span class="PUNC">,</span><span class="NAME">a</span><span class="PUNC">)</span><span class="PUNC">:</span><span class="NAME">t</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>276</span> </span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">=</span><span class="NAME">_f.force_td</span><span class="PUNC">?</span><span class="PUNC">(</span><span class="NAME">td</span><span class="PUNC">||</span><span class="STRN">''</span><span class="PUNC">)</span><span class="PUNC">:</span><span class="STRN">''</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>277</span> </span><span class="WHIT"> </span><span class="NAME">CSV.push</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">+</span><span class="NAME">l.join</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">+</span><span class="NAME">_f.fd</span><span class="PUNC">+</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">+</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>278</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>279</span>
<span class='line'>280</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">a</span><span class="PUNC">)</span><span class="NAME">s</span><span class="PUNC">=</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">RegExp</span><span class="PUNC">(</span><span class="STRN">'\\'</span><span class="PUNC">+</span><span class="NAME">a</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="NAME">r</span><span class="PUNC">=</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">RegExp</span><span class="PUNC">(</span><span class="STRN">'\\'</span><span class="PUNC">+</span><span class="NAME">a</span><span class="PUNC">,</span><span class="STRN">'g'</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="NAME">a</span><span class="PUNC">+</span><span class="PUNC">=</span><span class="NAME">a</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>281</span> </span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">toCSV.ld</span><span class="PUNC">==</span><span class="STRN">'\n'</span><span class="PUNC">)</span><span class="NAME">s</span><span class="PUNC">=</span><span class="REGX">/\n/</span><span class="PUNC">,</span><span class="NAME">r</span><span class="PUNC">=</span><span class="REGX">/\n/g</span><span class="PUNC">,</span><span class="NAME">a</span><span class="PUNC">=</span><span class="STRN">'\\n'</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>282</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">title</span><span class="PUNC">)</span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">title</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">Array</span><span class="PUNC">)</span><span class="NAME">t</span><span class="PUNC">(</span><span class="NAME">title</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>283</span>
<span class='line'>284</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="PUNC">(</span><span class="PUNC">;</span><span class="NAME">i</span><span class="PUNC">&lt;</span><span class="NAME">o.length</span><span class="PUNC">;</span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="NAME">t</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>285</span>
<span class='line'>286</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">CSV.join</span><span class="PUNC">(</span><span class="NAME">_f.ld</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>287</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>288</span> </span><span class="COMM">/* old:
<span class='line'>289</span> function quoteCSVfield(t,d){
<span class='line'>290</span> if(!d)d='"';
<span class='line'>291</span> for(var i=0,j,rd=new RegExp(d,'g'),d2=d+d;i&lt;t.length;i++){
<span class='line'>292</span> for(j=0;j&lt;t[i].length;j++)
<span class='line'>293</span> if(typeof t[i][j]=='string')t[i][j]=d+t[i][j].replace(rd,d2)+d;
<span class='line'>294</span> if(t[i] instanceof Array)t[i]=t[i].join(',');
<span class='line'>295</span> }
<span class='line'>296</span> return t.join('\n')+'\n';
<span class='line'>297</span> }
<span class='line'>298</span> */</span><span class="WHIT">
<span class='line'>299</span>
<span class='line'>300</span>
<span class='line'>301</span>
<span class='line'>302</span>
<span class='line'>303</span>
<span class='line'>304</span>
<span class='line'>305</span>
<span class='line'>306</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT">
<span class='line'>307</span> </span><span class="WHIT"> </span><span class="NAME">CeL.data.CSV</span><span class="WHIT">
<span class='line'>308</span> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>309</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>310</span>
<span class='line'>311</span>
<span class='line'>312</span> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>313</span>
<span class='line'>314</span> </span></pre></body></html>