mirror of
https://scm.univ-tours.fr/22107988t/rappaurio-sae501_502.git
synced 2025-11-01 22:05:22 +01:00
321 lines
54 KiB
HTML
321 lines
54 KiB
HTML
<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> * <a href="http://www.jsdb.org/" accessdate="2010/1/1 0:53">JSDB: JavaScript for databases</a>,
|
||
<span class='line'> 94</span> * <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</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"><</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"><</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"><</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"><</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檔<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"><</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"><</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"><</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<t.length;i++){
|
||
<span class='line'>292</span> for(j=0;j<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> |