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

1049 lines
195 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.
This file contains Unicode characters that might be confused with other characters. 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 native objects
<span class='line'> 4</span> * @fileoverview
<span class='line'> 5</span> * 本檔案包含了 native objects 的 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="PUNC">{</span><span class="WHIT">
<span class='line'> 11</span>
<span class='line'> 12</span> </span><span class="COMM">/**
<span class='line'> 13</span> * 本 module 之 name(id)&lt;span style="text-decoration:line-through;">不設定時會從呼叫時之 path 取得&lt;/span>。
<span class='line'> 14</span> * @type String
<span class='line'> 15</span> * @constant
<span class='line'> 16</span> * @inner
<span class='line'> 17</span> * @ignore
<span class='line'> 18</span> */</span><span class="WHIT">
<span class='line'> 19</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">module_name</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'native'</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 20</span>
<span class='line'> 21</span> </span><span class="COMM">//===================================================</span><span class="WHIT">
<span class='line'> 22</span> </span><span class="COMM">/**
<span class='line'> 23</span> * 若欲 include 整個 module 時,需囊括之 code。
<span class='line'> 24</span> * @type Function
<span class='line'> 25</span> * @param {Function} library_namespace namespace of library
<span class='line'> 26</span> * @param load_arguments 呼叫時之 argument(s)
<span class='line'> 27</span> * @return
<span class='line'> 28</span> * @name CeL.native
<span class='line'> 29</span> * @constant
<span class='line'> 30</span> * @inner
<span class='line'> 31</span> * @ignore
<span class='line'> 32</span> */</span><span class="WHIT">
<span class='line'> 33</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">code_for_including</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">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'> 34</span>
<span class='line'> 35</span> </span><span class="COMM">// requires 必須放在 '_' 後!</span><span class="WHIT">
<span class='line'> 36</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">eval</span><span class="PUNC">(</span><span class="NAME">library_namespace.use_function</span><span class="PUNC">(</span><span class="WHIT">
<span class='line'> 37</span> </span><span class="WHIT"> </span><span class="STRN">'data.split_String_to_Object'</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'> 38</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 39</span>
<span class='line'> 40</span>
<span class='line'> 41</span> </span><span class="COMM">/**
<span class='line'> 42</span> * null module constructor
<span class='line'> 43</span> * @class native objects 的 functions
<span class='line'> 44</span> */</span><span class="WHIT">
<span class='line'> 45</span> </span><span class="NAME">CeL.native</span><span class="WHIT">
<span class='line'> 46</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'> 47</span> </span><span class="WHIT"> </span><span class="COMM">// null module constructor</span><span class="WHIT">
<span class='line'> 48</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 49</span>
<span class='line'> 50</span>
<span class='line'> 51</span> </span><span class="COMM">/**
<span class='line'> 52</span> * for JSDT: 有 prototype 才會將之當作 Class
<span class='line'> 53</span> */</span><span class="WHIT">
<span class='line'> 54</span> </span><span class="NAME">CeL.native</span><span class="WHIT">
<span class='line'> 55</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'> 56</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 57</span>
<span class='line'> 58</span>
<span class='line'> 59</span>
<span class='line'> 60</span>
<span class='line'> 61</span>
<span class='line'> 62</span>
<span class='line'> 63</span> </span><span class="COMM">/* opposite of toUTCString()
<span class='line'> 64</span> 尚不成熟假如是type=='date'不如用new Date()!
<span class='line'> 65</span> string大部分可用new Date(Date.parse(str))代替!
<span class='line'> 66</span> http://www.comsharp.com/GetKnowledge/zh-CN/TeamBlogTimothyPage_K742.aspx
<span class='line'> 67</span>
<span class='line'> 68</span> var UTCDay,UTCMonth;
<span class='line'> 69</span> setObjValue('UTCDay','Sun,Mon,Tue,Wed,Thu,Fri,Sat',1);
<span class='line'> 70</span> setObjValue('UTCMonth','Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec',1);
<span class='line'> 71</span> var fromUTCStringFormat=[[0,3,2,1,4],[0,5,1,2,3],[0,4,1,2,3]]; // 0:[Mon, 9 Aug 2004 12:05:00 GMT],1:[Thu Sep 30 18:12:08 UTC+0800 2004],2:[Sat Jun 26 18:19:46 2004]
<span class='line'> 72</span> function fromUTCString(str,format){
<span class='line'> 73</span> var s=''+str,f;
<span class='line'> 74</span> if(!s)return;
<span class='line'> 75</span> if(typeof format=='undefined')if(f=Date.parse(s))return new Date(f);else return 'Unknown format!';//format=0;
<span class='line'> 76</span> if(!isNaN(format)&&format&lt;fromUTCStringFormat.length)f=fromUTCStringFormat[format];
<span class='line'> 77</span> else return 'Yet support this kind of format['+format+']!\nWe support to '+fromUTCStringFormat.length+'.';
<span class='line'> 78</span> if(!f[0])f[0]=' ';
<span class='line'> 79</span> s=s.replace(new RegExp(f[0]+'+','g'),f[0]).split(f[0]);
<span class='line'> 80</span> if(s.length&lt;f.length)return 'The item length of data: '+s.length+' is less then format['+format+']: '+f.length+'!\n'+s.join(',');// new Date
<span class='line'> 81</span> if(f.length==5)s[f[4]]=s[f[4]].split(':');
<span class='line'> 82</span> else if(f.length==7)s[f[4]]=[s[f[4]],s[f[5]],s[f[6]]];
<span class='line'> 83</span> else return 'Illegal date format!';
<span class='line'> 84</span> if(format==1&&s[4].match(/([+-]\d{2})/))s[f[4]][0]=parseInt(s[f[3]][0])+parseInt(RegExp.$1);
<span class='line'> 85</span> alert(str+'\n'+s[f[1]]+','+s[f[2]]+'('+UTCMonth[s[f[2]]]+'),'+s[f[3]]+','+s[f[4]][0]+','+s[f[4]][1]+','+s[f[4]][2]);
<span class='line'> 86</span> // check,可以包括星期
<span class='line'> 87</span> if( !(s[f[2]]=UTCMonth[s[f[2]]]) || !(s=new Date(s[f[1]],s[f[2]],s[f[3]],s[f[4]][0],s[f[4]][1],s[f[4]][2])) ) // Date.UTC()
<span class='line'> 88</span> s='Input data error!';
<span class='line'> 89</span> return s;
<span class='line'> 90</span> }
<span class='line'> 91</span> */</span><span class="WHIT">
<span class='line'> 92</span>
<span class='line'> 93</span> </span><span class="COMM">/* string &lt;-> date object, Date.parse()
<span class='line'> 94</span> http://msdn2.microsoft.com/zh-tw/library/t5580e8h(VS.80).aspx
<span class='line'> 95</span>
<span class='line'> 96</span>
<span class='line'> 97</span> /((\d{1,4})[\/.-])?([01]?\d)([\/.-]([0-3]?\d))?/
<span class='line'> 98</span> /([0-2]?\d):([0-5]?\d)(:([0-5]?\d))?\s*(([PA])M)?/
<span class='line'> 99</span>
<span class='line'>100</span>
<span class='line'>101</span> (
<span class='line'>102</span>
<span class='line'>103</span>
<span class='line'>104</span> (
<span class='line'>105</span>
<span class='line'>106</span>
<span class='line'>107</span> (
<span class='line'>108</span> ([12]\d{3}|1?\d{2})
<span class='line'>109</span>
<span class='line'>110</span> [\/.-]
<span class='line'>111</span> )?
<span class='line'>112</span>
<span class='line'>113</span> ([01]?\d)
<span class='line'>114</span>
<span class='line'>115</span> ([\/.-]([0-3]?\d)(\.\d+)?)?
<span class='line'>116</span>
<span class='line'>117</span>
<span class='line'>118</span> |
<span class='line'>119</span>
<span class='line'>120</span>
<span class='line'>121</span> ([0-2]?\d)
<span class='line'>122</span> :
<span class='line'>123</span> ([0-5]?\d)
<span class='line'>124</span>
<span class='line'>125</span> (:([0-5]?\d))?
<span class='line'>126</span>
<span class='line'>127</span> \s*
<span class='line'>128</span> (([PA])M)?
<span class='line'>129</span>
<span class='line'>130</span>
<span class='line'>131</span> )
<span class='line'>132</span>
<span class='line'>133</span>
<span class='line'>134</span>
<span class='line'>135</span> \s*
<span class='line'>136</span> ){1,2}
<span class='line'>137</span>
<span class='line'>138</span>
<span class='line'>139</span> try:
<span class='line'>140</span> '2003/1/4 12:53:5'.toDate();
<span class='line'>141</span> String_to_Date.m.join('&lt;br/>');
<span class='line'>142</span> $2:year
<span class='line'>143</span> $3:month
<span class='line'>144</span> $5:mday
<span class='line'>145</span>
<span class='line'>146</span>
<span class='line'>147</span> */</span><span class="WHIT">
<span class='line'>148</span> </span><span class="NAME">String_to_Date.pd</span><span class="PUNC">=</span><span class="REGX">/(([12]\d{3}|1\d{2}|[2-9]\d)[\/.\-–年])?([01]?\d)([\/.\-–月]([0-3]?\d)日?)?/</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// pattern of date</span><span class="WHIT">
<span class='line'>149</span> </span><span class="NAME">String_to_Date.pt</span><span class="PUNC">=</span><span class="REGX">/([0-2]?\d)[:時]([0-5]?\d)([:分]([0-5]?\d)(\.\d+)?)?\s*(([PA])M)?/i</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// pattern of time</span><span class="WHIT">
<span class='line'>150</span> </span><span class="NAME">String_to_Date.r1</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">String_to_Date.pd.source</span><span class="PUNC">+</span><span class="STRN">'(\\s+'</span><span class="PUNC">+</span><span class="NAME">String_to_Date.pt.source</span><span class="PUNC">+</span><span class="STRN">')?'</span><span class="PUNC">,</span><span class="STRN">'i'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// date [time]</span><span class="WHIT">
<span class='line'>151</span> </span><span class="NAME">String_to_Date.r2</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">String_to_Date.pt.source</span><span class="PUNC">+</span><span class="STRN">'(\\s+'</span><span class="PUNC">+</span><span class="NAME">String_to_Date.pd.source</span><span class="PUNC">+</span><span class="STRN">')?'</span><span class="PUNC">,</span><span class="STRN">'i'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// time [date]</span><span class="WHIT">
<span class='line'>152</span> </span><span class="COMM">//String_to_Date.m; // matched string</span><span class="WHIT">
<span class='line'>153</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">String_to_Date</span><span class="PUNC">(</span><span class="NAME">s</span><span class="PUNC">,</span><span class="NAME">f</span><span class="PUNC">,</span><span class="NAME">diff</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="COMM">// date string, force parse(no Date.parse() try), 時差 in hour(例如 TW: UTC+8 → 8, 可使用.5)</span><span class="WHIT">
<span class='line'>154</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">s</span><span class="PUNC">)</span><span class="NAME">s</span><span class="PUNC">=</span><span class="NAME">this.valueOf</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="COMM">//.toString();</span><span class="WHIT">
<span class='line'>155</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">m</span><span class="PUNC">,</span><span class="NAME">a</span><span class="PUNC">,</span><span class="NAME">b</span><span class="PUNC">,</span><span class="NAME">c</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>156</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">f</span><span class="PUNC">&&</span><span class="PUNC">!</span><span class="NAME">diff</span><span class="PUNC">&&</span><span class="PUNC">(</span><span class="NAME">m</span><span class="PUNC">=</span><span class="NAME">Date.parse</span><span class="PUNC">(</span><span class="NAME">s</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Date</span><span class="PUNC">(</span><span class="NAME">m</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// 有diff時不使用 Date.parse</span><span class="WHIT">
<span class='line'>157</span>
<span class='line'>158</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">m</span><span class="PUNC">=</span><span class="NAME">s.match</span><span class="PUNC">(</span><span class="REGX">/(^|[^\d])([12]\d{3})([^\/.\-–年]|$)/</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="NAME">s</span><span class="PUNC">=</span><span class="NAME">m</span><span class="PUNC">[</span><span class="NUMB">2</span><span class="PUNC">]</span><span class="PUNC">+</span><span class="STRN">'/1'</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// 僅有年時的bug</span><span class="WHIT">
<span class='line'>159</span>
<span class='line'>160</span> </span><span class="WHIT"> </span><span class="NAME">f</span><span class="PUNC">=</span><span class="NUMB">1911</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// 小於此年份會加上此年份。for 民國</span><span class="WHIT">
<span class='line'>161</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">diff</span><span class="PUNC">)</span><span class="NAME">diff</span><span class="PUNC">=</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Date</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getTimezoneOffset</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">+</span><span class="NAME">parseInt</span><span class="PUNC">(</span><span class="NUMB">60</span><span class="PUNC">*</span><span class="NAME">diff</span><span class="PUNC">)</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="PUNC">(</span><span class="PUNC">!</span><span class="NAME">diff</span><span class="PUNC">)</span><span class="NAME">diff</span><span class="PUNC">=</span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>163</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">m</span><span class="PUNC">=</span><span class="NAME">s.match</span><span class="PUNC">(</span><span class="NAME">String_to_Date.r1</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>164</span> </span><span class="WHIT"> </span><span class="COMM">// 日期先</span><span class="WHIT">
<span class='line'>165</span> </span><span class="WHIT"> </span><span class="COMM">//for(var i=1;i&lt;11;i++)m[i]=m[i]?Math.floor(m[i]):0; // needless</span><span class="WHIT">
<span class='line'>166</span> </span><span class="WHIT"> </span><span class="NAME">a</span><span class="PUNC">=</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Date</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">b</span><span class="PUNC">=</span><span class="NAME">m</span><span class="PUNC">[</span><span class="NUMB">2</span><span class="PUNC">]</span><span class="PUNC">-</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">&&</span><span class="NAME">b</span><span class="PUNC">&lt;</span><span class="NUMB">200</span><span class="PUNC">?</span><span class="NAME">b</span><span class="PUNC">+</span><span class="NAME">f</span><span class="PUNC">:</span><span class="NAME">b</span><span class="PUNC">,</span><span class="NAME">m</span><span class="PUNC">[</span><span class="NUMB">3</span><span class="PUNC">]</span><span class="PUNC">?</span><span class="NAME">m</span><span class="PUNC">[</span><span class="NUMB">3</span><span class="PUNC">]</span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">:</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="NAME">m</span><span class="PUNC">[</span><span class="NUMB">5</span><span class="PUNC">]</span><span class="PUNC">||</span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">m</span><span class="PUNC">[</span><span class="NUMB">12</span><span class="PUNC">]</span><span class="PUNC">==</span><span class="STRN">'P'</span><span class="PUNC">||</span><span class="NAME">m</span><span class="PUNC">[</span><span class="NUMB">13</span><span class="PUNC">]</span><span class="PUNC">==</span><span class="STRN">'p'</span><span class="PUNC">?</span><span class="NAME">m</span><span class="PUNC">[</span><span class="NUMB">7</span><span class="PUNC">]</span><span class="PUNC">-</span><span class="NUMB">0</span><span class="PUNC">+</span><span class="NUMB">12</span><span class="PUNC">:</span><span class="NAME">m</span><span class="PUNC">[</span><span class="NUMB">7</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="NAME">m</span><span class="PUNC">[</span><span class="NUMB">8</span><span class="PUNC">]</span><span class="PUNC">-</span><span class="NAME">diff</span><span class="PUNC">,</span><span class="NAME">m</span><span class="PUNC">[</span><span class="NUMB">10</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="NAME">m</span><span class="PUNC">[</span><span class="NUMB">11</span><span class="PUNC">]</span><span class="PUNC">*</span><span class="NUMB">1</span><span class="NAME">e3</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>167</span>
<span class='line'>168</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">m</span><span class="PUNC">||</span><span class="PUNC">!</span><span class="NAME">isNaN</span><span class="PUNC">(</span><span class="NAME">m</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">&&</span><span class="PUNC">(</span><span class="NAME">c</span><span class="PUNC">=</span><span class="NAME">s.match</span><span class="PUNC">(</span><span class="NAME">String_to_Date.r2</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="COMM">// 不match或僅有一數字</span><span class="WHIT">
<span class='line'>169</span> </span><span class="WHIT"> </span><span class="COMM">// 時間先</span><span class="WHIT">
<span class='line'>170</span> </span><span class="WHIT"> </span><span class="NAME">m</span><span class="PUNC">=</span><span class="NAME">c</span><span class="PUNC">,</span><span class="NAME">a</span><span class="PUNC">=</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Date</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">b</span><span class="PUNC">=</span><span class="NAME">m</span><span class="PUNC">[</span><span class="NUMB">10</span><span class="PUNC">]</span><span class="PUNC">-</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">&&</span><span class="NAME">b</span><span class="PUNC">&lt;</span><span class="NUMB">200</span><span class="PUNC">?</span><span class="NAME">b</span><span class="PUNC">+</span><span class="NAME">f</span><span class="PUNC">:</span><span class="NAME">b</span><span class="PUNC">,</span><span class="NAME">m</span><span class="PUNC">[</span><span class="NUMB">11</span><span class="PUNC">]</span><span class="PUNC">?</span><span class="NAME">m</span><span class="PUNC">[</span><span class="NUMB">11</span><span class="PUNC">]</span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">:</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="NAME">m</span><span class="PUNC">[</span><span class="NUMB">13</span><span class="PUNC">]</span><span class="PUNC">||</span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">m</span><span class="PUNC">[</span><span class="NUMB">7</span><span class="PUNC">]</span><span class="PUNC">==</span><span class="STRN">'P'</span><span class="PUNC">||</span><span class="NAME">m</span><span class="PUNC">[</span><span class="NUMB">7</span><span class="PUNC">]</span><span class="PUNC">==</span><span class="STRN">'p'</span><span class="PUNC">?</span><span class="NAME">m</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">-</span><span class="NUMB">0</span><span class="PUNC">+</span><span class="NUMB">12</span><span class="PUNC">:</span><span class="NAME">m</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="NAME">m</span><span class="PUNC">[</span><span class="NUMB">2</span><span class="PUNC">]</span><span class="PUNC">-</span><span class="NAME">diff</span><span class="PUNC">,</span><span class="NAME">m</span><span class="PUNC">[</span><span class="NUMB">4</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="NAME">m</span><span class="PUNC">[</span><span class="NUMB">5</span><span class="PUNC">]</span><span class="PUNC">*</span><span class="NUMB">1</span><span class="NAME">e3</span><span class="PUNC">)</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">//var t="match:\n"+s+"\n\n";for(var i=0;i&lt;m.length;i++){t+=(i>9?i:' '+i)+': '+m[i]+'\n';}if(!m[1]||!m[2]||!m[4])alert(t);</span><span class="WHIT">
<span class='line'>173</span>
<span class='line'>174</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">String_to_Date.m</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">m</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>175</span> </span><span class="WHIT"> </span><span class="COMM">// 判別未輸入時預設年份設對了沒:以最接近 now 的為基準</span><span class="WHIT">
<span class='line'>176</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">b</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="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Date</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</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="PUNC">{</span><span class="WHIT">
<span class='line'>177</span> </span><span class="WHIT"> </span><span class="NAME">m</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">Date</span><span class="PUNC">(</span><span class="NAME">a</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>178</span> </span><span class="WHIT"> </span><span class="NAME">a.setFullYear</span><span class="PUNC">(</span><span class="NAME">s</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">b</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">Date</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getFullYear</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>179</span> </span><span class="WHIT"> </span><span class="NAME">m.setFullYear</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">b</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">s</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">s</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>180</span> </span><span class="WHIT"> </span><span class="KEYW">if</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">b</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">a</span><span class="WHIT"> </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">b</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="NAME">a</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">b</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="WHIT">
<span class='line'>181</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="NAME">b</span><span class="WHIT"> </span><span class="PUNC">&lt;</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">m</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>182</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">m</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>183</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>184</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">a</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>185</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>186</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>187</span>
<span class='line'>188</span> </span><span class="COMM">// Turn to RFC 822 date-time</span><span class="WHIT">
<span class='line'>189</span> </span><span class="COMM">//DateToRFC822[generateCode.dLK]='setTool,String_to_Date';</span><span class="WHIT">
<span class='line'>190</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">DateToRFC822</span><span class="PUNC">(</span><span class="NAME">d</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>191</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="PUNC">(</span><span class="NAME">d</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">Date</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>192</span> </span><span class="WHIT"> </span><span class="NAME">d</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="STRN">''</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">d</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toDate</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>193</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">d</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>194</span> </span><span class="WHIT"> </span><span class="NAME">d</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">Date</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>195</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">d.toGMTString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">replace</span><span class="PUNC">(</span><span class="REGX">/UTC/gi</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'GMT'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>196</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>197</span>
<span class='line'>198</span> </span><span class="COMM">// 要用更多樣化的請使用format_date()</span><span class="WHIT">
<span class='line'>199</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">Date_to_String</span><span class="PUNC">(</span><span class="NAME">sp</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>200</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">sp</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>201</span> </span><span class="WHIT"> </span><span class="NAME">sp</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'>202</span> </span><span class="WHIT"> </span><span class="KEYW">with</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>203</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">''</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">getYear</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">sp</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">getMonth</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">sp</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">getDate</span><span class="PUNC">(</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 class='line'>204</span> </span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">getHours</span><span class="PUNC">(</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="NAME">getMinutes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>205</span> </span><span class="WHIT"> </span><span class="COMM">// +':'+.getSeconds()+'.'+getMilliseconds();</span><span class="WHIT">
<span class='line'>206</span> </span><span class="WHIT"> </span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>207</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>208</span> </span><span class="COMM">//var tt='2001/8/7 03:35PM';alert(tt+'\n'+tt.toDate().toStr());</span><span class="WHIT">
<span class='line'>209</span>
<span class='line'>210</span>
<span class='line'>211</span> </span><span class="COMM">/*
<span class='line'>212</span> mode:
<span class='line'>213</span> +4:不顯示時間,
<span class='line'>214</span> +3:顯示時間至時,
<span class='line'>215</span> +2:顯示時間至分,
<span class='line'>216</span> +1:顯示時間至秒,
<span class='line'>217</span> +0:顯示時間至毫秒(ms)
<span class='line'>218</span>
<span class='line'>219</span> +32(4&lt;&lt;3):不顯示日期,
<span class='line'>220</span> +24(3&lt;&lt;3):顯示日期mm/dd,
<span class='line'>221</span> +16(2&lt;&lt;3):顯示日期yyyy/mm,
<span class='line'>222</span> +8(1&lt;&lt;3):顯示日期yyyy/mm/dd(星期),
<span class='line'>223</span> +0:顯示日期yyyy/mm/dd
<span class='line'>224</span>
<span class='line'>225</span> +64(1&lt;&lt;6):input UTC
<span class='line'>226</span> +128(2&lt;&lt;6):output UTC
<span class='line'>227</span>
<span class='line'>228</span> NOTE:
<span class='line'>229</span> 在現有時制下要轉換其他時區之時間成正確time:
<span class='line'>230</span> d=_其他時區之時間_;
<span class='line'>231</span> diff=其他時區之時差(例如 TW: UTC+8)
<span class='line'>232</span> d.setTime(d.getTime()-60000*((new Date).getTimezoneOffset()+diff*60))
<span class='line'>233</span>
<span class='line'>234</span> */</span><span class="WHIT">
<span class='line'>235</span>
<span class='line'>236</span> </span><span class="NAME">CeL.native</span><span class="WHIT">
<span class='line'>237</span> </span><span class="PUNC">.</span><span class="WHIT">
<span class='line'>238</span> </span><span class="COMM">/**
<span class='line'>239</span> * 顯示格式化日期 string
<span class='line'>240</span> * @param date_value 要轉換的 date, 值過小時當作時間, &lt;0 轉成當下時間
<span class='line'>241</span> * @param {Number} mode 要轉換的 mode
<span class='line'>242</span> * @param {Boolean} zero_fill 對 0-9 是否補零
<span class='line'>243</span> * @param {String} date_separator date separator
<span class='line'>244</span> * @param {String} time_separator time separator
<span class='line'>245</span> * @return {String} 格式化後的日期
<span class='line'>246</span> * @example
<span class='line'>247</span> * alert(format_date());
<span class='line'>248</span> * @since 2003/10/18 1:04 修正
<span class='line'>249</span> * @since 2010/4/16 10:37:30 重構(refactoring)
<span class='line'>250</span> * @requires setTool,to_fixed
<span class='line'>251</span> * @see
<span class='line'>252</span> * http://www.merlyn.demon.co.uk/js-dates.htm,
<span class='line'>253</span> * http://aa.usno.navy.mil/data/docs/JulianDate.html
<span class='line'>254</span> * @memberOf CeL.native
<span class='line'>255</span> */</span><span class="WHIT">
<span class='line'>256</span> </span><span class="NAME">format_date</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">format_date</span><span class="PUNC">(</span><span class="NAME">date_value</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">mode</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">zero_fill</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">date_separator</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">time_separator</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>257</span> </span><span class="WHIT"> </span><span class="COMM">//library_namespace.debug('[' + (typeof date_value) + '] ' + date_value + ', mode: ' + mode);</span><span class="WHIT">
<span class='line'>258</span>
<span class='line'>259</span> </span><span class="WHIT"> </span><span class="COMM">// initiate</span><span class="WHIT">
<span class='line'>260</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">mode</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>261</span> </span><span class="WHIT"> </span><span class="NAME">mode</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 class='line'>262</span>
<span class='line'>263</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">output_UTC</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">mode</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">time_mode</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">return_string</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'>264</span> </span><span class="WHIT"> </span><span class="NAME">show_number</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">zero_fill</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">n</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>265</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">n</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">9</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">n</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'0'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">n</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>266</span> </span><span class="WHIT"> </span><span class="PUNC">}</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">n</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>267</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">n</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>268</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>269</span>
<span class='line'>270</span> </span><span class="WHIT"> </span><span class="COMM">// date & time mode</span><span class="WHIT">
<span class='line'>271</span> </span><span class="WHIT"> </span><span class="NAME">mode</span><span class="WHIT"> </span><span class="PUNC">%</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">64</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>272</span> </span><span class="WHIT"> </span><span class="COMM">// UTC mode</span><span class="WHIT">
<span class='line'>273</span> </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="NAME">b</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">mode</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">/</span><span class="WHIT"> </span><span class="NUMB">64</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>274</span> </span><span class="WHIT"> </span><span class="COMM">// input UTC</span><span class="WHIT">
<span class='line'>275</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">b</span><span class="WHIT"> </span><span class="PUNC">%</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NUMB">1</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 class='line'>276</span> </span><span class="WHIT"> </span><span class="NAME">output_UTC</span><span class="WHIT"> </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">a</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>277</span>
<span class='line'>278</span> </span><span class="WHIT"> </span><span class="NAME">time_mode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">mode</span><span class="WHIT"> </span><span class="PUNC">%</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>279</span> </span><span class="WHIT"> </span><span class="COMM">// date mode</span><span class="WHIT">
<span class='line'>280</span> </span><span class="WHIT"> </span><span class="NAME">mode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">mode</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">time_mode</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">/</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>281</span> </span><span class="WHIT"> </span><span class="COMM">// time_mode > 4 && mode > 3: error mode: 沒啥好顯示的了</span><span class="WHIT">
<span class='line'>282</span>
<span class='line'>283</span> </span><span class="WHIT"> </span><span class="COMM">// 處理各種不同的 date</span><span class="WHIT">
<span class='line'>284</span> </span><span class="WHIT"> </span><span class="NAME">b</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">date_value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>285</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">b</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'number'</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">date_value</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>286</span> </span><span class="WHIT"> </span><span class="COMM">// 全球標準時間(UCT)與本地時間之差距</span><span class="WHIT">
<span class='line'>287</span> </span><span class="WHIT"> </span><span class="COMM">// UTC time = local time + format_date.UTC_offset(ms)</span><span class="WHIT">
<span class='line'>288</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">a</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">isNaN</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">format_date.UTC_offset</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>289</span> </span><span class="WHIT"> </span><span class="COMM">// input UTC 時之差距(ms)</span><span class="WHIT">
<span class='line'>290</span> </span><span class="WHIT"> </span><span class="COMM">// .getTimezoneOffset() is in minute. 60*1000(ms)=6e4(ms)</span><span class="WHIT">
<span class='line'>291</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">format_date.UTC_offset</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">6</span><span class="NAME">e4</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">Date</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getTimezoneOffset</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>292</span>
<span class='line'>293</span> </span><span class="WHIT"> </span><span class="COMM">// 值過小時當作時間: d&lt;90000000~24*60*60*1000判別為當天只顯示時間。不允許 d&lt;0</span><span class="WHIT">
<span class='line'>294</span> </span><span class="WHIT"> </span><span class="NAME">date_value</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">Date</span><span class="PUNC">(</span><span class="NAME">Math.abs</span><span class="PUNC">(</span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">date_value</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">9</span><span class="NAME">e7</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">date_value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>295</span> </span><span class="WHIT"> </span><span class="NAME">mode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">32</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>296</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">b</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'string'</span><span class="WHIT"> </span><span class="PUNC">&&</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">date_value.toDate</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>297</span> </span><span class="WHIT"> </span><span class="NAME">date_value</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'>298</span> </span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">b</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'date'</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>299</span> </span><span class="WHIT"> </span><span class="COMM">// 應對在 Excel 等外部程式會出現的東西</span><span class="WHIT">
<span class='line'>300</span> </span><span class="WHIT"> </span><span class="NAME">date_value</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">Date</span><span class="PUNC">(</span><span class="NAME">date_value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>301</span> </span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT">
<span class='line'>302</span> </span><span class="WHIT"> </span><span class="COMM">// http://www.interq.or.jp/student/exeal/dss/ejs/1/1.html</span><span class="WHIT">
<span class='line'>303</span> </span><span class="WHIT"> </span><span class="COMM">// 引数がオブジェクトを要求してくる場合は instanceof 演算子を使用します</span><span class="WHIT">
<span class='line'>304</span> </span><span class="WHIT"> </span><span class="COMM">// typeof date_value!=='object'||date_value.constructor!=Date</span><span class="WHIT">
<span class='line'>305</span> </span><span class="WHIT"> </span><span class="PUNC">!</span><span class="PUNC">(</span><span class="NAME">date_value</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">Date</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>306</span> </span><span class="WHIT"> </span><span class="COMM">// new Date === new Date()</span><span class="WHIT">
<span class='line'>307</span> </span><span class="WHIT"> </span><span class="NAME">date_value</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">Date</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>308</span>
<span class='line'>309</span>
<span class='line'>310</span> </span><span class="WHIT"> </span><span class="COMM">// 處理 date</span><span class="WHIT">
<span class='line'>311</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">mode</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">4</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>312</span> </span><span class="WHIT"> </span><span class="NAME">return_string</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">show_number</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">output_UTC</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">date_value.getUTCMonth</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>313</span> </span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">date_value.getMonth</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>314</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">date_separator</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>315</span> </span><span class="WHIT"> </span><span class="NAME">date_separator</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'>316</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">mode</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>317</span> </span><span class="WHIT"> </span><span class="NAME">return_string</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">output_UTC</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">date_value.getUTCFullYear</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">date_value</span><span class="WHIT">
<span class='line'>318</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">getFullYear</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>319</span> </span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">date_separator</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">return_string</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>320</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">mode</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>321</span> </span><span class="WHIT"> </span><span class="NAME">return_string</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">date_separator</span><span class="WHIT">
<span class='line'>322</span> </span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">show_number</span><span class="PUNC">(</span><span class="NAME">output_UTC</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">date_value.getUTCDate</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">date_value</span><span class="WHIT">
<span class='line'>323</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">getDate</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>324</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">mode</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>325</span> </span><span class="WHIT"> </span><span class="NAME">return_string</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="PUNC">(</span><span class="NAME">output_UTC</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">date_value.getUTCDay</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>326</span> </span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">date_value.getDay</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</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'>327</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>328</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>329</span>
<span class='line'>330</span> </span><span class="WHIT"> </span><span class="COMM">// 處理 time</span><span class="WHIT">
<span class='line'>331</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">time_mode</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">4</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>332</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">mode</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">4</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>333</span> </span><span class="WHIT"> </span><span class="COMM">// 日期 & 時間中間分隔</span><span class="WHIT">
<span class='line'>334</span> </span><span class="WHIT"> </span><span class="NAME">return_string</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">' '</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>335</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">time_separator</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>336</span> </span><span class="WHIT"> </span><span class="NAME">time_separator</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'>337</span> </span><span class="WHIT"> </span><span class="NAME">return_string</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">show_number</span><span class="PUNC">(</span><span class="NAME">output_UTC</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">date_value.getUTCHours</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>338</span> </span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">date_value.getHours</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>339</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">time_mode</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>340</span> </span><span class="WHIT"> </span><span class="NAME">return_string</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">time_separator</span><span class="WHIT">
<span class='line'>341</span> </span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">show_number</span><span class="PUNC">(</span><span class="NAME">output_UTC</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">date_value.getUTCMinutes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>342</span> </span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">date_value.getMinutes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>343</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">time_mode</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>344</span> </span><span class="WHIT"> </span><span class="NAME">return_string</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">time_separator</span><span class="WHIT">
<span class='line'>345</span> </span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">time_mode</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">show_number</span><span class="PUNC">(</span><span class="NAME">output_UTC</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">date_value</span><span class="WHIT">
<span class='line'>346</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">getUTCSeconds</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">date_value.getSeconds</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>347</span> </span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">output_UTC</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">date_value.getUTCSeconds</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>348</span> </span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">date_value.getUTCMilliseconds</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">/</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="NAME">e3</span><span class="WHIT">
<span class='line'>349</span> </span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">date_value.getSeconds</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">date_value.getMilliseconds</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">/</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="NAME">e3</span><span class="WHIT">
<span class='line'>350</span> </span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">to_fixed</span><span class="PUNC">(</span><span class="NUMB">3</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>351</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>352</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>353</span>
<span class='line'>354</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">return_string</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>355</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>356</span>
<span class='line'>357</span>
<span class='line'>358</span>
<span class='line'>359</span> </span><span class="COMM">/*
<span class='line'>360</span> function經ScriptEngine會轉成/取用'function'開始到'}'為止的字串
<span class='line'>361</span>
<span class='line'>362</span> 用[var thisFuncName=parse_function().funcName]可得本身之函數名
<span class='line'>363</span> if(_detect_)alert('double run '+parse_function().funcName+'() by '+parse_function(arguments.callee.caller).funcName+'()!');
<span class='line'>364</span>
<span class='line'>365</span> You may use this.constructor
<span class='line'>366</span>
<span class='line'>367</span>
<span class='line'>368</span> TODO:
<span class='line'>369</span> to call: parse_function(this,arguments)
<span class='line'>370</span> e.g., parent_func.child_func=function(){var name=parse_function(this,arguments);}
<span class='line'>371</span>
<span class='line'>372</span> bug:
<span class='line'>373</span> 函數定義 .toString() 時無法使用。
<span class='line'>374</span> */</span><span class="WHIT">
<span class='line'>375</span> </span><span class="NAME">CeL.native</span><span class="WHIT">
<span class='line'>376</span> </span><span class="PUNC">.</span><span class="WHIT">
<span class='line'>377</span> </span><span class="COMM">/**
<span class='line'>378</span> * 函數的文字解譯/取得函數的語法
<span class='line'>379</span> * @param {Function|String} function_name function name or function structure
<span class='line'>380</span> * @param flag =1: reduce
<span class='line'>381</span> * @return
<span class='line'>382</span> * @example
<span class='line'>383</span> * parsed_data = new parse_function(function_name);
<span class='line'>384</span> * @see
<span class='line'>385</span> * http://www.interq.or.jp/student/exeal/dss/ref/jscript/object/function.html,
<span class='line'>386</span> * Syntax error: http://msdn.microsoft.com/library/en-us/script56/html/js56jserrsyntaxerror.asp
<span class='line'>387</span> * @memberOf CeL.native
<span class='line'>388</span> * @since 2010/5/16 23:04:54
<span class='line'>389</span> */</span><span class="WHIT">
<span class='line'>390</span> </span><span class="NAME">parse_function</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">parse_function</span><span class="PUNC">(</span><span class="NAME">function_name</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">flag</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>391</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">function_name</span><span class="WHIT">
<span class='line'>392</span> </span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">function_name</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">parse_function.caller</span><span class="PUNC">)</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'>393</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>394</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">function_name</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'string'</span><span class="WHIT">
<span class='line'>395</span> </span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="PUNC">(</span><span class="NAME">function_name</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">library_namespace.get_various</span><span class="PUNC">(</span><span class="NAME">function_name</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>396</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>397</span>
<span class='line'>398</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fs</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">function_name</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">fs.match</span><span class="PUNC">(</span><span class="REGX">/^function[\s\n]+(\w*)[\s\n]*\(([\w,\s\n]*)\)[\s\n]*\{[\s\n]*((.|\n)*)[\s\n]*\}[\s\n]*$/</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>399</span> </span><span class="WHIT"> </span><span class="COMM">//library_namespace.debug(typeof function_name + '\n' + fs + '\n' + m);</span><span class="WHIT">
<span class='line'>400</span>
<span class='line'>401</span> </span><span class="WHIT"> </span><span class="COMM">// detect error, 包含引數</span><span class="WHIT">
<span class='line'>402</span> </span><span class="WHIT"> </span><span class="COMM">// 原先functionRegExp=/^\s*function\s+(\w+) ..</span><span class="WHIT">
<span class='line'>403</span> </span><span class="WHIT"> </span><span class="COMM">// 因為有function(~){~}這種的,所以改變。</span><span class="WHIT">
<span class='line'>404</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">m</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>405</span> </span><span class="WHIT"> </span><span class="COMM">// JScript5 不能用throw!</span><span class="WHIT">
<span class='line'>406</span> </span><span class="WHIT"> </span><span class="COMM">// http://www.oldversion.com/Internet-Explorer.html</span><span class="WHIT">
<span class='line'>407</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">1002</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'Syntax error (語法錯誤)'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>408</span>
<span class='line'>409</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">function_name</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">m</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>410</span> </span><span class="WHIT"> </span><span class="NAME">library_namespace.warn</span><span class="PUNC">(</span><span class="STRN">'Function name unmatch (函數名稱不相符可能是用了reference)'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>411</span>
<span class='line'>412</span> </span><span class="WHIT"> </span><span class="COMM">//library_namespace.debug('function ' + m[1] + '(' + m[2] + '){\n' + m[3] + '\n}');</span><span class="WHIT">
<span class='line'>413</span>
<span class='line'>414</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>415</span> </span><span class="WHIT"> </span><span class="NAME">string</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">fs</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>416</span> </span><span class="WHIT"> </span><span class="NAME">name</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">m</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>417</span> </span><span class="WHIT"> </span><span class="COMM">// 去除前後空白</span><span class="WHIT">
<span class='line'>418</span> </span><span class="WHIT"> </span><span class="NAME">arguments</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">m</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="REGX">/[\s\n]+/g</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">split</span><span class="PUNC">(</span><span class="STRN">','</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>419</span> </span><span class="WHIT"> </span><span class="NAME">code</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">m</span><span class="PUNC">[</span><span class="NUMB">3</span><span class="PUNC">]</span><span class="WHIT">
<span class='line'>420</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>421</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>422</span>
<span class='line'>423</span>
<span class='line'>424</span>
<span class='line'>425</span>
<span class='line'>426</span> </span><span class="COMM">// 補強String.fromCharCode()</span><span class="WHIT">
<span class='line'>427</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">fromCharCode</span><span class="PUNC">(</span><span class="NAME">c</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>428</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">isNaN</span><span class="PUNC">(</span><span class="NAME">c</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>429</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">String.fromCharCode</span><span class="PUNC">(</span><span class="NAME">c</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>430</span> </span><span class="WHIT"> </span><span class="KEYW">try</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>431</span> </span><span class="WHIT"> </span><span class="COMM">// 直接最快</span><span class="WHIT">
<span class='line'>432</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">eval</span><span class="PUNC">(</span><span class="STRN">'String.fromCharCode('</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">');'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>433</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">catch</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>434</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>435</span>
<span class='line'>436</span> </span><span class="COMM">/*
<span class='line'>437</span> if (typeof c == 'string')
<span class='line'>438</span> return eval('String.fromCharCode(' + n + ')');// c=c.split(','); 後者可以通過審查
<span class='line'>439</span> if (typeof c == 'object') {
<span class='line'>440</span> var t = '', d, i, a, n = [];
<span class='line'>441</span> if (c.length)
<span class='line'>442</span> a = c;
<span class='line'>443</span> else {
<span class='line'>444</span> a = [];
<span class='line'>445</span> for (i in c)
<span class='line'>446</span> a.push(c[i]);
<span class='line'>447</span> }
<span class='line'>448</span> for (i = 0; i &lt; a.length; i++)
<span class='line'>449</span> if (!isNaN(c = a[i]) || !isNaN(c = ('' + a[i]).charCodeAt(0)))
<span class='line'>450</span> n.push(c); // 跳過無法判讀的值
<span class='line'>451</span> return eval('String.fromCharCode(' + n + ')');//n.join(',') 這樣較快
<span class='line'>452</span> }
<span class='line'>453</span> */</span><span class="WHIT">
<span class='line'>454</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>455</span>
<span class='line'>456</span>
<span class='line'>457</span>
<span class='line'>458</span>
<span class='line'>459</span>
<span class='line'>460</span> </span><span class="NAME">CeL.native</span><span class="WHIT">
<span class='line'>461</span> </span><span class="PUNC">.</span><span class="WHIT">
<span class='line'>462</span> </span><span class="COMM">/**
<span class='line'>463</span> * 對付有時 charCodeAt 會傳回 >256 的數值。
<span class='line'>464</span> * 若確定編碼是 ASCII (char code 是 0~255) 即可使用此函數替代 charCodeAt。
<span class='line'>465</span> * @param text string
<span class='line'>466</span> * @param position at what position
<span class='line'>467</span> * @return
<span class='line'>468</span> * @since 2008/8/2 10:10:49
<span class='line'>469</span> * @see
<span class='line'>470</span> * http://www.alanwood.net/demos/charsetdiffs.html
<span class='line'>471</span> * @memberOf CeL.native
<span class='line'>472</span> */</span><span class="WHIT">
<span class='line'>473</span> </span><span class="NAME">toASCIIcode</span><span class="PUNC">=</span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">text</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">position</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>474</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">c</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>475</span>
<span class='line'>476</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">_f.t</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>477</span> </span><span class="WHIT"> </span><span class="COMM">// initial</span><span class="WHIT">
<span class='line'>478</span> </span><span class="WHIT"> </span><span class="KEYW">var</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">129</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">_f.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">l</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>479</span> </span><span class="WHIT"> </span><span class="NUMB">8364</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">128</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>480</span> </span><span class="WHIT"> </span><span class="NUMB">8218</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">130</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>481</span> </span><span class="WHIT"> </span><span class="NUMB">402</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">131</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>482</span> </span><span class="WHIT"> </span><span class="NUMB">8222</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">132</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>483</span> </span><span class="WHIT"> </span><span class="NUMB">8230</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">133</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>484</span> </span><span class="WHIT"> </span><span class="NUMB">8224</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">134</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>485</span> </span><span class="WHIT"> </span><span class="NUMB">8225</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">135</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>486</span> </span><span class="WHIT"> </span><span class="NUMB">710</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">136</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>487</span> </span><span class="WHIT"> </span><span class="NUMB">8240</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">137</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>488</span> </span><span class="WHIT"> </span><span class="NUMB">352</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">138</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>489</span> </span><span class="WHIT"> </span><span class="NUMB">8249</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">139</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>490</span> </span><span class="WHIT"> </span><span class="NUMB">338</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">140</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>491</span> </span><span class="WHIT"> </span><span class="NUMB">381</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">142</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>492</span> </span><span class="WHIT"> </span><span class="NUMB">8216</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">145</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>493</span> </span><span class="WHIT"> </span><span class="NUMB">8217</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">146</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>494</span> </span><span class="WHIT"> </span><span class="NUMB">8220</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">147</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>495</span> </span><span class="WHIT"> </span><span class="NUMB">8221</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">148</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>496</span> </span><span class="WHIT"> </span><span class="NUMB">8226</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">149</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>497</span> </span><span class="WHIT"> </span><span class="NUMB">8211</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">150</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>498</span> </span><span class="WHIT"> </span><span class="NUMB">8212</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">151</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>499</span> </span><span class="WHIT"> </span><span class="NUMB">732</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">152</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>500</span> </span><span class="WHIT"> </span><span class="NUMB">8482</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">153</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>501</span> </span><span class="WHIT"> </span><span class="NUMB">353</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">154</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>502</span> </span><span class="WHIT"> </span><span class="NUMB">8250</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">155</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>503</span> </span><span class="WHIT"> </span><span class="NUMB">339</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">156</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>504</span> </span><span class="WHIT"> </span><span class="NUMB">382</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">158</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>505</span> </span><span class="WHIT"> </span><span class="NUMB">376</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">159</span><span class="WHIT">
<span class='line'>506</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>507</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </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="NUMB">256</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>508</span> </span><span class="WHIT"> </span><span class="NAME">t</span><span class="PUNC">[</span><span class="NAME">i</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'>509</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">l</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>510</span> </span><span class="WHIT"> </span><span class="COMM">// sl(i+' = '+l[i]),</span><span class="WHIT">
<span class='line'>511</span> </span><span class="WHIT"> </span><span class="NAME">t</span><span class="PUNC">[</span><span class="NAME">Math.floor</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">l</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>512</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>513</span>
<span class='line'>514</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">position</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">isNaN</span><span class="PUNC">(</span><span class="NAME">text</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>515</span> </span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">text</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>516</span> </span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT">
<span class='line'>517</span> </span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">text.charCodeAt</span><span class="PUNC">(</span><span class="NAME">position</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>518</span>
<span class='line'>519</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">128</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="NAME">_f.t</span><span class="PUNC">[</span><span class="NAME">c</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">c</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>520</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>521</span>
<span class='line'>522</span>
<span class='line'>523</span> </span><span class="COMM">/* 2008/8/2 9:9:16
<span class='line'>524</span> encodeURI, encodeURIComponent 僅能編成 utf-8對於其他 local 編碼可使用本函數。
<span class='line'>525</span>
<span class='line'>526</span> e.g.,
<span class='line'>527</span> f.src='http://www.map.com.tw/search_engine/searchBar.asp?search_class=address&SearchWord='+encodeUC(q[0],'big5')
<span class='line'>528</span>
<span class='line'>529</span>
<span class='line'>530</span>
<span class='line'>531</span>
<span class='line'>532</span> perl
<span class='line'>533</span> #use Encode qw(from_to);
<span class='line'>534</span> use Encode;
<span class='line'>535</span>
<span class='line'>536</span> my $tEnc='utf-8';
<span class='line'>537</span>
<span class='line'>538</span> $t="金";
<span class='line'>539</span>
<span class='line'>540</span> $t=Encode::decode($t,'big5');
<span class='line'>541</span>
<span class='line'>542</span> Encode::from_to($t,$lEnc,$outEnc);
<span class='line'>543</span>
<span class='line'>544</span> Encode::from_to
<span class='line'>545</span>
<span class='line'>546</span> @b=split(//,$a);
<span class='line'>547</span>
<span class='line'>548</span> for($i=0;$i&lt;scalar(@b);$i++){
<span class='line'>549</span> $r.=sprintf('%%%X',ord($b[$i]));
<span class='line'>550</span> };
<span class='line'>551</span>
<span class='line'>552</span>
<span class='line'>553</span> */</span><span class="WHIT">
<span class='line'>554</span> </span><span class="COMM">//encodeUC[generateCode.dLK]='toASCIIcode';</span><span class="WHIT">
<span class='line'>555</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">encodeUC</span><span class="PUNC">(</span><span class="NAME">u</span><span class="PUNC">,</span><span class="NAME">enc</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>556</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">enc</span><span class="PUNC">||</span><span class="NAME">enc</span><span class="PUNC">==</span><span class="STRN">'utf8'</span><span class="PUNC">)</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">encodeURI</span><span class="PUNC">(</span><span class="NAME">u</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>557</span>
<span class='line'>558</span> </span><span class="WHIT"> </span><span class="KEYW">with</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ActiveXObject</span><span class="PUNC">(</span><span class="STRN">"ADODB.Stream"</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>559</span> </span><span class="WHIT"> </span><span class="NAME">Type</span><span class="PUNC">=</span><span class="NUMB">2</span><span class="PUNC">,</span><span class="COMM">//adTypeText;</span><span class="WHIT">
<span class='line'>560</span> </span><span class="WHIT"> </span><span class="NAME">Charset</span><span class="PUNC">=</span><span class="NAME">enc</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>561</span> </span><span class="WHIT"> </span><span class="NAME">Open</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>562</span> </span><span class="WHIT"> </span><span class="NAME">WriteText</span><span class="PUNC">(</span><span class="NAME">u</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>563</span> </span><span class="WHIT"> </span><span class="NAME">Position</span><span class="PUNC">=</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>564</span> </span><span class="WHIT"> </span><span class="NAME">Charset</span><span class="PUNC">=</span><span class="STRN">'iso-8859-1'</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>565</span> </span><span class="WHIT"> </span><span class="NAME">u</span><span class="PUNC">=</span><span class="NAME">ReadText</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>566</span> </span><span class="WHIT"> </span><span class="NAME">Close</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>567</span>
<span class='line'>568</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">c</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="WHIT">
<span class='line'>569</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">u.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'>570</span> </span><span class="WHIT"> </span><span class="NAME">r.push</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">c</span><span class="PUNC">=</span><span class="NAME">u.charCodeAt</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">&lt;</span><span class="NUMB">128</span><span class="PUNC">?</span><span class="NAME">u.charAt</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">:</span><span class="STRN">'%'</span><span class="PUNC">+</span><span class="NAME">toASCIIcode</span><span class="PUNC">(</span><span class="NAME">c</span><span class="PUNC">,</span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NUMB">16</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toUpperCase</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>571</span>
<span class='line'>572</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">r.join</span><span class="PUNC">(</span><span class="STRN">''</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">replace</span><span class="PUNC">(</span><span class="REGX">/ /g</span><span class="PUNC">,</span><span class="STRN">'+'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>573</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>574</span>
<span class='line'>575</span>
<span class='line'>576</span>
<span class='line'>577</span>
<span class='line'>578</span> </span><span class="NAME">CeL.native</span><span class="WHIT">
<span class='line'>579</span> </span><span class="PUNC">.</span><span class="WHIT">
<span class='line'>580</span> </span><span class="COMM">/**
<span class='line'>581</span> * String pattern (e.g., "/a+/g") to RegExp pattern.
<span class='line'>582</span> * qq// in perl.
<span class='line'>583</span> * String.prototype.toRegExp = function(f) { return to_RegExp_pattern(this.valueOf(), f); };
<span class='line'>584</span> * @param {String} pattern pattern text
<span class='line'>585</span> * @param {Boolean|String} [RegExp_flag] flags when need to return RegExp object
<span class='line'>586</span> * @param {RegExp} [escape_pattern] char pattern need to escape
<span class='line'>587</span> * @return {RegExp} RegExp object
<span class='line'>588</span> */</span><span class="WHIT">
<span class='line'>589</span> </span><span class="NAME">to_RegExp_pattern</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">pattern</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">RegExp_flag</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">escape_pattern</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>590</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pattern</span><span class="WHIT">
<span class='line'>591</span> </span><span class="WHIT"> </span><span class="COMM">// 不能用 $0</span><span class="WHIT">
<span class='line'>592</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">replace</span><span class="PUNC">(</span><span class="NAME">escape_pattern</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="REGX">/([.+*?|()\[\]\\{}])/g</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'\\$1'</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>593</span> </span><span class="WHIT"> </span><span class="COMM">// 這種方法不完全,例如 /\s+$|^\s+/g</span><span class="WHIT">
<span class='line'>594</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">replace</span><span class="PUNC">(</span><span class="REGX">/^([\^])/</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'\\^'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">replace</span><span class="PUNC">(</span><span class="REGX">/([$])$/</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'\\$'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>595</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">RegExp_flag</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">r</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="REGX">/^[igms]+$/i</span><span class="PUNC">.</span><span class="NAME">test</span><span class="PUNC">(</span><span class="NAME">RegExp_flag</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">RegExp_flag</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><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">r</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>596</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>597</span>
<span class='line'>598</span>
<span class='line'>599</span>
<span class='line'>600</span> </span><span class="NAME">CeL.native</span><span class="WHIT">
<span class='line'>601</span> </span><span class="PUNC">.</span><span class="WHIT">
<span class='line'>602</span> </span><span class="COMM">/**
<span class='line'>603</span> * 重新設定 RegExp object 之 flag
<span class='line'>604</span> * @param {RegExp} regexp RegExp object to set
<span class='line'>605</span> * @param {String} flag flag of RegExp
<span class='line'>606</span> * @return {RegExp}
<span class='line'>607</span> * @example
<span class='line'>608</span> * 附帶 'g' flag 的 RegExp 對相同字串作 .test() 時,第二次並不會重設。因此像下面的 expression 兩次並不會得到相同結果。
<span class='line'>609</span> * var r=/,/g,t='a,b';
<span class='line'>610</span> * WScript.Echo(r.test(t)+','+r.test(t));
<span class='line'>611</span> *
<span class='line'>612</span> * // 改成這樣就可以了:
<span class='line'>613</span> * var r=/,/g,t='a,b',s=renew_RegExp_flag(r,'-g');
<span class='line'>614</span> * WScript.Echo(s.test(t)+','+s.test(t));
<span class='line'>615</span> *
<span class='line'>616</span> * // 這倒沒問題:
<span class='line'>617</span> * r=/,/g,a='a,b';
<span class='line'>618</span> * if(r.test(a))alert(a.replace(r,'_'));
<span class='line'>619</span> *
<span class='line'>620</span> * // delete r.lastIndex; 無效,得用 r.lastIndex=0; 因此下面的亦可:
<span class='line'>621</span> * if(r.global)r.lastIndex=0;
<span class='line'>622</span> * if(r.test(a)){~}
<span class='line'>623</span> *
<span class='line'>624</span> * @see
<span class='line'>625</span> * http://msdn.microsoft.com/zh-tw/library/x9h97e00(VS.80).aspx,
<span class='line'>626</span> * 如果規則運算式已經設定了全域旗標test 將會從 lastIndex 值表示的位置開始搜尋字串。如果未設定全域旗標,則 test 會略過 lastIndex 值,並從字串之首開始搜尋。
<span class='line'>627</span> * http://www.aptana.com/reference/html/api/RegExp.html
<span class='line'>628</span> * @memberOf CeL.native
<span class='line'>629</span> */</span><span class="WHIT">
<span class='line'>630</span> </span><span class="NAME">renew_RegExp_flag</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">regexp</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">flag</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>631</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="WHIT"> </span><span class="NAME">flag_set</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>632</span> </span><span class="WHIT"> </span><span class="NAME">global</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'g'</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>633</span> </span><span class="WHIT"> </span><span class="NAME">ignoreCase</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'i'</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>634</span> </span><span class="WHIT"> </span><span class="NAME">multiline</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'m'</span><span class="WHIT">
<span class='line'>635</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>636</span>
<span class='line'>637</span> </span><span class="WHIT"> </span><span class="COMM">// 未指定 flag: get flag</span><span class="WHIT">
<span class='line'>638</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">flag</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>639</span> </span><span class="WHIT"> </span><span class="NAME">flag</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'>640</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">flag_set</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>641</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">regexp</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>642</span> </span><span class="WHIT"> </span><span class="NAME">flag</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">flag_set</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>643</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">flag</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>644</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>645</span>
<span class='line'>646</span> </span><span class="WHIT"> </span><span class="KEYW">var</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">flag.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="NAME">F</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><span class="NAME">m</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>647</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">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="NUMB">1</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="NUMB">0</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">F</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>648</span>
<span class='line'>649</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">F</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>650</span> </span><span class="WHIT"> </span><span class="COMM">// 無 [+-]</span><span class="WHIT">
<span class='line'>651</span> </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">flag</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>652</span> </span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT">
<span class='line'>653</span> </span><span class="WHIT"> </span><span class="COMM">// f: [+-]~ 的情況parse flag</span><span class="WHIT">
<span class='line'>654</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">flag_set</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>655</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">m</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">flag.indexOf</span><span class="PUNC">(</span><span class="NAME">flag_set</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </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="NAME">a</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">m</span><span class="WHIT">
<span class='line'>656</span> </span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">regexp</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>657</span> </span><span class="WHIT"> </span><span class="NAME">F</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">flag_set</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>658</span>
<span class='line'>659</span> </span><span class="WHIT"> </span><span class="COMM">// for JScript&lt;=5</span><span class="WHIT">
<span class='line'>660</span> </span><span class="WHIT"> </span><span class="KEYW">try</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>661</span> </span><span class="WHIT"> </span><span class="KEYW">return</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">regexp.source</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">F</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>662</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="KEYW">catch</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>663</span> </span><span class="WHIT"> </span><span class="COMM">// TODO: handle exception</span><span class="WHIT">
<span class='line'>664</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>665</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>666</span>
<span class='line'>667</span>
<span class='line'>668</span> </span><span class="COMM">/* 2004/5/27 16:08
<span class='line'>669</span> 將 MS-DOS 萬用字元(wildcard characters)轉成 RegExp, 回傳 pattern
<span class='line'>670</span> for search
<span class='line'>671</span>
<span class='line'>672</span> usage:
<span class='line'>673</span> p=new RegExp(turnWildcardToRegExp('*.*'))
<span class='line'>674</span>
<span class='line'>675</span>
<span class='line'>676</span> flag&1 有變化的時候才 return RegExp
<span class='line'>677</span> flag&2 add ^$
<span class='line'>678</span>
<span class='line'>679</span>
<span class='line'>680</span> 萬用字元經常用在檔名的置換。
<span class='line'>681</span> * 代表任意檔案名稱
<span class='line'>682</span>ls * 表示列出所有檔案名稱。
<span class='line'>683</span> ? 則代表一個字元
<span class='line'>684</span> 如: ls index.??? 表示列出所有 index.三個字元 的檔案名稱
<span class='line'>685</span> [ ] 代表選擇其中一個字元
<span class='line'>686</span> [Ab] 則代表 A 或 b 二者之中的一個字元
<span class='line'>687</span> 如: ls [Ab]same 為 Asame 或 bsame
<span class='line'>688</span> [! ] 代表除外的一個字元
<span class='line'>689</span> [!Ab] 則代表 不是 A 且 不是 b 的一個字元
<span class='line'>690</span> 如: [!0-9] 表不是數字字元
<span class='line'>691</span> 如: *[!E] 表末尾不是 E 的檔名
<span class='line'>692</span>
<span class='line'>693</span> memo:
<span class='line'>694</span> 檔案名稱不可包含字元 ** 不包含目錄分隔字元 [\\/]:
<span class='line'>695</span> /:*?"&lt;>|/
<span class='line'>696</span>
<span class='line'>697</span> */</span><span class="WHIT">
<span class='line'>698</span>
<span class='line'>699</span> </span><span class="COMM">// 萬用字元 RegExp source, ReadOnly</span><span class="WHIT">
<span class='line'>700</span> </span><span class="NAME">turnWildcardToRegExp.w_chars</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'>701</span>
<span class='line'>702</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">turnWildcardToRegExp</span><span class="PUNC">(</span><span class="NAME">p</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">f</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="COMM">// pattern, flag</span><span class="WHIT">
<span class='line'>703</span>
<span class='line'>704</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">p</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">RegExp</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>705</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">p</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>706</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">p</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">p</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">'string'</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>707</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>708</span>
<span class='line'>709</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ic</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">arguments.callee.w_chars</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">r</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>710</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">f</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</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">ic</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">p</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>711</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">p</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>712</span>
<span class='line'>713</span> </span><span class="WHIT"> </span><span class="NAME">ic</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">ic</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'>714</span> </span><span class="WHIT"> </span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">p</span><span class="WHIT">
<span class='line'>715</span> </span><span class="WHIT"> </span><span class="COMM">// old: 考慮 \</span><span class="WHIT">
<span class='line'>716</span> </span><span class="WHIT"> </span><span class="COMM">//.replace(/(\\*)(\*+|\?+|\.)/g,function($0,$1,$2){var c=$2.charAt(0);return $1.length%2?$0:$1+(c=='*'?ic+'*':c=='?'?ic+'{'+$2.length+'}':'\\'+$2);})</span><span class="WHIT">
<span class='line'>717</span>
<span class='line'>718</span> </span><span class="WHIT"> </span><span class="COMM">// 處理目錄分隔字元:多轉一,'/' → '\\' 或相反</span><span class="WHIT">
<span class='line'>719</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">replace</span><span class="PUNC">(</span><span class="REGX">/[\\\/]+/g</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">dirSp</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'string'</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">dirSp</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'>720</span>
<span class='line'>721</span> </span><span class="WHIT"> </span><span class="COMM">// 在 RegExp 中有作用,但非萬用字元,在檔名中無特殊作用的</span><span class="WHIT">
<span class='line'>722</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">replace</span><span class="PUNC">(</span><span class="REGX">/([().^$\-])/g</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'\\$1'</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>723</span>
<span class='line'>724</span> </span><span class="WHIT"> </span><span class="COMM">// * 代表任意檔案字元</span><span class="WHIT">
<span class='line'>725</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">replace</span><span class="PUNC">(</span><span class="REGX">/\*+/g</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'\0*'</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>726</span>
<span class='line'>727</span> </span><span class="WHIT"> </span><span class="COMM">// ? 代表一個檔案字元</span><span class="WHIT">
<span class='line'>728</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">replace</span><span class="PUNC">(</span><span class="REGX">/\?+/g</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">$0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>729</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">'\0{'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">$0.length</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'>730</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>731</span>
<span class='line'>732</span> </span><span class="WHIT"> </span><span class="COMM">// translate wildcard characters</span><span class="WHIT">
<span class='line'>733</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">replace</span><span class="PUNC">(</span><span class="REGX">/\0+/g</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ic</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>734</span>
<span class='line'>735</span> </span><span class="WHIT"> </span><span class="COMM">// [ ] 代表選擇其中一個字元</span><span class="WHIT">
<span class='line'>736</span> </span><span class="WHIT"> </span><span class="COMM">//pass</span><span class="WHIT">
<span class='line'>737</span>
<span class='line'>738</span> </span><span class="WHIT"> </span><span class="COMM">// [! ] 代表除外的一個字元</span><span class="WHIT">
<span class='line'>739</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">replace</span><span class="PUNC">(</span><span class="REGX">/\[!([^\]]*)\]/g</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'[^$1]'</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>740</span> </span><span class="WHIT"> </span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>741</span>
<span class='line'>742</span>
<span class='line'>743</span> </span><span class="WHIT"> </span><span class="COMM">// 有變化的時候才 return RegExp</span><span class="WHIT">
<span class='line'>744</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="PUNC">(</span><span class="NAME">f</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">p</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="NAME">r</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>745</span> </span><span class="WHIT"> </span><span class="KEYW">try</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>746</span> </span><span class="WHIT"> </span><span class="NAME">p</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">f</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">2</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">r</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">r</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'i'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>747</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">catch</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>748</span> </span><span class="WHIT"> </span><span class="COMM">// 輸入了不正確的 RegExp未預期的次數符號等</span><span class="WHIT">
<span class='line'>749</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>750</span>
<span class='line'>751</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">p</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>752</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>753</span>
<span class='line'>754</span>
<span class='line'>755</span>
<span class='line'>756</span>
<span class='line'>757</span> </span><span class="COMM">// string & Number處理 -----------------------------------------------</span><span class="WHIT">
<span class='line'>758</span>
<span class='line'>759</span> </span><span class="COMM">// set prototype's function of 內建物件 for 相容性(not good way..)</span><span class="WHIT">
<span class='line'>760</span> </span><span class="COMM">//setTool[generateCode.dLK]='*setTool();';//,product,countS,to_fixed,getText,turnUnicode,trimStr,String_to_Date,Date_to_String,JSalert</span><span class="WHIT">
<span class='line'>761</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">setTool</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>762</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">String.prototype.x</span><span class="PUNC">&&</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">product</span><span class="PUNC">===</span><span class="STRN">'function'</span><span class="PUNC">)</span><span class="NAME">String.prototype.x</span><span class="PUNC">=</span><span class="NAME">product</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>763</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">String.prototype.count</span><span class="PUNC">&&</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">countS</span><span class="PUNC">===</span><span class="STRN">'function'</span><span class="PUNC">)</span><span class="NAME">String.prototype.count</span><span class="PUNC">=</span><span class="NAME">countS</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>764</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">Number.prototype.to_fixed</span><span class="PUNC">&&</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">to_fixed</span><span class="PUNC">===</span><span class="STRN">'function'</span><span class="PUNC">)</span><span class="NAME">Number.prototype.to_fixed</span><span class="PUNC">=</span><span class="NAME">to_fixed</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>765</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">String.prototype.gText</span><span class="PUNC">&&</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">getText</span><span class="PUNC">===</span><span class="STRN">'function'</span><span class="PUNC">)</span><span class="NAME">String.prototype.gText</span><span class="PUNC">=</span><span class="NAME">getText</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>766</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">String.prototype.turnU</span><span class="PUNC">&&</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">turnUnicode</span><span class="PUNC">===</span><span class="STRN">'function'</span><span class="PUNC">)</span><span class="NAME">String.prototype.turnU</span><span class="PUNC">=</span><span class="NAME">turnUnicode</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>767</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">String.prototype.trim</span><span class="PUNC">&&</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">trimStr</span><span class="PUNC">===</span><span class="STRN">'function'</span><span class="PUNC">)</span><span class="NAME">String.prototype.trim</span><span class="PUNC">=</span><span class="NAME">trimStr</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>768</span> </span><span class="WHIT"> </span><span class="COMM">//if(!Array.prototype.unique&&typeof Aunique==='function')Array.prototype.unique=Aunique; // 建議不用因為在for(in Array)時會..</span><span class="WHIT">
<span class='line'>769</span>
<span class='line'>770</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">String.prototype.toDate</span><span class="PUNC">&&</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">String_to_Date</span><span class="PUNC">===</span><span class="STRN">'function'</span><span class="PUNC">)</span><span class="NAME">String.prototype.toDate</span><span class="PUNC">=</span><span class="NAME">String_to_Date</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>771</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">Date.prototype.toStr</span><span class="PUNC">&&</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">Date_to_String</span><span class="PUNC">===</span><span class="STRN">'function'</span><span class="PUNC">)</span><span class="NAME">Date.prototype.toStr</span><span class="PUNC">=</span><span class="NAME">Date_to_String</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>772</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">alert</span><span class="PUNC">==</span><span class="STRN">'undefined'</span><span class="PUNC">&&</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">JSalert</span><span class="PUNC">===</span><span class="STRN">'function'</span><span class="PUNC">)</span><span class="NAME">alert</span><span class="PUNC">=</span><span class="NAME">JSalert</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// 在HTML中typeof alert=='object'</span><span class="WHIT">
<span class='line'>773</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>774</span>
<span class='line'>775</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">Aunique</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">uniqueArray</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>776</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">uniqueArray</span><span class="PUNC">(</span><span class="NAME">a</span><span class="PUNC">,</span><span class="NAME">f</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="COMM">// array,sortFunction</span><span class="WHIT">
<span class='line'>777</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">f</span><span class="PUNC">)</span><span class="NAME">a.sort</span><span class="PUNC">(</span><span class="NAME">f</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="KEYW">else</span><span class="WHIT"> </span><span class="NAME">a.sort</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>778</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">1</span><span class="PUNC">,</span><span class="NAME">j</span><span class="PUNC">=</span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>779</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">a.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'>780</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">i</span><span class="PUNC">]</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="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">j</span><span class="PUNC">&lt;</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="NAME">j</span><span class="PUNC">=</span><span class="NAME">i</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>781</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">j</span><span class="PUNC">>=</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="NAME">a.splice</span><span class="PUNC">(</span><span class="NAME">j</span><span class="PUNC">,</span><span class="NAME">i</span><span class="PUNC">-</span><span class="NAME">j</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="NAME">i</span><span class="PUNC">=</span><span class="NAME">j</span><span class="PUNC">,</span><span class="NAME">j</span><span class="PUNC">=</span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>782</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">j</span><span class="PUNC">>=</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="NAME">a.splice</span><span class="PUNC">(</span><span class="NAME">j</span><span class="PUNC">,</span><span class="NAME">i</span><span class="PUNC">-</span><span class="NAME">j</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>783</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">a</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>784</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>785</span>
<span class='line'>786</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">product</span><span class="PUNC">(</span><span class="NAME">c</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>787</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">isNaN</span><span class="PUNC">(</span><span class="NAME">c</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Math.floor</span><span class="PUNC">(</span><span class="NAME">c</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>788</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'>789</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="WHIT"> </span><span class="NAME">r</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><span class="NAME">s</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'>790</span> </span><span class="WHIT"> </span><span class="NAME">s</span><span class="PUNC">[</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>791</span> </span><span class="WHIT"> </span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </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">c</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>792</span> </span><span class="WHIT"> </span><span class="NAME">s</span><span class="PUNC">[</span><span class="NAME">i</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><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">s</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">s</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">i</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>793</span> </span><span class="WHIT"> </span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">c</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>794</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;=</span><span class="WHIT"> </span><span class="NAME">c</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>795</span> </span><span class="WHIT"> </span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">s</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">c</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>796</span> </span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">/</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>797</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>798</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="COMM">//in VB:String(c,this)</span><span class="WHIT">
<span class='line'>799</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>800</span> </span><span class="COMM">// 計算string中出現k之次數 用s///亦可@perl</span><span class="WHIT">
<span class='line'>801</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">countS</span><span class="PUNC">(</span><span class="NAME">k</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="COMM">// k亦可用RegExp</span><span class="WHIT">
<span class='line'>802</span> </span><span class="WHIT"> </span><span class="COMM">//var c=0,s=this,i=0,l;if(k&&typeof k=='string'){l=k.length;while((i=this.indexOf(k,i))!=-1)c++,i+=l;}return c;</span><span class="WHIT">
<span class='line'>803</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">this.replace</span><span class="PUNC">(</span><span class="NAME">k</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">/</span><span class="WHIT"> </span><span class="NAME">k.length</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>804</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>805</span>
<span class='line'>806</span>
<span class='line'>807</span> </span><span class="NAME">CeL.native</span><span class="WHIT">
<span class='line'>808</span> </span><span class="PUNC">.</span><span class="WHIT">
<span class='line'>809</span> </span><span class="COMM">/**
<span class='line'>810</span> * 取至小數 d 位,
<span class='line'>811</span> * 肇因: JScript即使在做加減運算時有時還是會出現 1.4000000000000001、0.0999999999999998 等數值。此函數可取至 1.4 與 0.1。
<span class='line'>812</span> * c.f., round()
<span class='line'>813</span> * @param {Number} digits 1,2,..: number of decimal places shown
<span class='line'>814</span> * @param {Number} [max] max digits max===0:round() else floor()
<span class='line'>815</span> * @return
<span class='line'>816</span> * @see
<span class='line'>817</span> * https://bugzilla.mozilla.org/show_bug.cgi?id=5856
<span class='line'>818</span> * IEEE754の丸め演算は最も報告されるES3「バグ」である。
<span class='line'>819</span> * http://www.jibbering.com/faq/#FAQ4_6
<span class='line'>820</span> * http://en.wikipedia.org/wiki/Rounding
<span class='line'>821</span> * @example
<span class='line'>822</span> * {var d=new Date,v=0.09999998,i=0,a;for(;i&lt;100000;i++)a=v.to_fixed(2);alert(v+'\n→'+a+'\ntime:'+format_date(new Date-d));}
<span class='line'>823</span> * @memberOf CeL.native
<span class='line'>824</span> */</span><span class="WHIT">
<span class='line'>825</span> </span><span class="NAME">to_fixed</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">digits</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">max</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>826</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">v</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.valueOf</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>827</span> </span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">n</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>828</span>
<span class='line'>829</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">isNaN</span><span class="PUNC">(</span><span class="NAME">v</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>830</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">v</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>831</span>
<span class='line'>832</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">isNaN</span><span class="PUNC">(</span><span class="NAME">digits</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">digits</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>833</span> </span><span class="WHIT"> </span><span class="COMM">// 內定8位</span><span class="WHIT">
<span class='line'>834</span> </span><span class="WHIT"> </span><span class="NAME">digits</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>835</span> </span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">digits</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">20</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>836</span> </span><span class="WHIT"> </span><span class="NAME">digits</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">20</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>837</span>
<span class='line'>838</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">max</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">Number.prototype.toFixed</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>839</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">parseFloat</span><span class="PUNC">(</span><span class="NAME">v.toFixed</span><span class="PUNC">(</span><span class="NAME">digits</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>840</span>
<span class='line'>841</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">v</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>842</span> </span><span class="WHIT"> </span><span class="COMM">// 負數</span><span class="WHIT">
<span class='line'>843</span> </span><span class="WHIT"> </span><span class="NAME">n</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">v</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NAME">v</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>844</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">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">v</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">v.toString</span><span class="PUNC">(</span><span class="NUMB">10</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">indexOf</span><span class="PUNC">(</span><span class="STRN">'e'</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>845</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">v.charAt</span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </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">'-'</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">v</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>846</span>
<span class='line'>847</span> </span><span class="WHIT"> </span><span class="COMM">//library_namespace.debug(v);</span><span class="WHIT">
<span class='line'>848</span> </span><span class="WHIT"> </span><span class="COMM">// TODO: using +.5 的方法</span><span class="WHIT">
<span class='line'>849</span> </span><span class="WHIT"> </span><span class="COMM">// http://clip.artchiu.org/2009/06/26/%E4%BB%A5%E6%95%B8%E5%AD%B8%E7%9A%84%E5%8E%9F%E7%90%86%E8%99%95%E7%90%86%E3%80%8C%E5%9B%9B%E6%8D%A8%E4%BA%94%E5%85%A5%E3%80%8D/</span><span class="WHIT">
<span class='line'>850</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">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">v.indexOf</span><span class="PUNC">(</span><span class="STRN">'.'</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </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 class='line'>851</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">digits</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">v.length</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>852</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">max</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>853</span> </span><span class="WHIT"> </span><span class="NAME">v</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">v.slice</span><span class="PUNC">(</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="NUMB">1</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">digits</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>854</span> </span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>855</span> </span><span class="WHIT"> </span><span class="NAME">v</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'00000000000000000000'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">Math.round</span><span class="PUNC">(</span><span class="WHIT">
<span class='line'>856</span> </span><span class="WHIT"> </span><span class="NAME">v.slice</span><span class="PUNC">(</span><span class="NUMB">0</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><span class="NAME">v.substr</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">digits</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 class='line'>857</span> </span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">v.charAt</span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">digits</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NUMB">10</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>858</span> </span><span class="WHIT"> </span><span class="COMM">// (v!=0?alert(v+','+v.length+','+digits+','+v.substr(0,v.length-digits)+','+v.substr(max)):0);</span><span class="WHIT">
<span class='line'>859</span> </span><span class="WHIT"> </span><span class="NAME">v</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">v.slice</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">max</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">v.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">digits</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="NAME">v.substr</span><span class="PUNC">(</span><span class="NAME">max</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>860</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>861</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>862</span>
<span class='line'>863</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">v</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">parseFloat</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">n</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">''</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">v</span><span class="PUNC">)</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 class='line'>864</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>865</span> </span><span class="COMM">/* old:very slow
<span class='line'>866</span> function to_fixed(d,m){
<span class='line'>867</span> var v=this.valueOf(),i;if(isNaN(v))return v;
<span class='line'>868</span> if(isNaN(d)||d&lt;0)d=8; // 內定8位
<span class='line'>869</span> if(!m){
<span class='line'>870</span> v=Math.round(Math.pow(10,d)*v);v=v&lt;0?'-'+'0'.x(d)+(-v):'0'.x(d)+v;
<span class='line'>871</span> v=v.slice(0,i=v.length-d)+'.'+v.substr(i);
<span class='line'>872</span> }else if(i=(v=''+v).indexOf('.')+1)v=v.slice(0,i+(d?d:d-1));
<span class='line'>873</span> return parseFloat(v||0);
<span class='line'>874</span> }
<span class='line'>875</span> */</span><span class="WHIT">
<span class='line'>876</span>
<span class='line'>877</span> </span><span class="COMM">/*
<span class='line'>878</span> // 增添單位
<span class='line'>879</span> var addDenominationSet={};
<span class='line'>880</span> addDenominationSet.a=',,,,'.split(',');
<span class='line'>881</span> function addDenomination(a,b){
<span class='line'>882</span>
<span class='line'>883</span> }
<span class='line'>884</span> */</span><span class="WHIT">
<span class='line'>885</span>
<span class='line'>886</span>
<span class='line'>887</span>
<span class='line'>888</span>
<span class='line'>889</span> </span><span class="COMM">//var sourceF=WScript.ScriptName,targetF='test.js';simpleWrite('tmp.js',alert+'\n'+simpleRead+'\n'+simpleWrite+'\nvar t="",ForReading=1,ForWriting=2,ForAppending=8\n,TristateUseDefault=-2,TristateTrue=-1,TristateFalse=0\n,WshShell=WScript.CreateObject("WScript.Shell"),fso=WScript.CreateObject("Scripting.FileSystemObject");\nt='+dQuote(simpleRead(sourceF),80)+';\nsimpleWrite("'+targetF+'",t);//eval(t);\nalert(simpleRead("'+sourceF+'")==simpleRead("'+targetF+'")?"The same (test dQuote OK!)":"Different!");');//WshShell.Run('"'+getFolder(WScript.ScriptFullName)+targetF+'"');</span><span class="WHIT">
<span class='line'>890</span> </span><span class="COMM">// determine quotation mark:輸入字串,傳回已加'或"之字串。</span><span class="WHIT">
<span class='line'>891</span> </span><span class="COMM">/*
<span class='line'>892</span> dQuote.qc=function(c,C){
<span class='line'>893</span> return c&lt;32?'\\'+c:C;
<span class='line'>894</span> };
<span class='line'>895</span> */</span><span class="WHIT">
<span class='line'>896</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">dQuote</span><span class="PUNC">(</span><span class="NAME">s</span><span class="PUNC">,</span><span class="NAME">len</span><span class="PUNC">,</span><span class="NAME">sp</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="COMM">// string,分割長度(會採用'~'+"~"的方式),separator(去除末尾用)</span><span class="WHIT">
<span class='line'>897</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">q</span><span class="PUNC">;</span><span class="NAME">s</span><span class="PUNC">=</span><span class="STRN">''</span><span class="PUNC">+</span><span class="NAME">s</span><span class="PUNC">;</span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">sp</span><span class="PUNC">)</span><span class="NAME">s</span><span class="PUNC">=</span><span class="NAME">s.replace</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">sp</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="WHIT"> </span><span class="COMM">// 去除末尾之sp</span><span class="WHIT">
<span class='line'>898</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">isNaN</span><span class="PUNC">(</span><span class="NAME">len</span><span class="PUNC">)</span><span class="PUNC">||</span><span class="NAME">len</span><span class="PUNC">&lt;</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="NAME">len</span><span class="PUNC">=</span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>899</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">len</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>900</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="STRN">''</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>901</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="PUNC">(</span><span class="PUNC">;</span><span class="NAME">s</span><span class="PUNC">;</span><span class="PUNC">)</span><span class="NAME">t</span><span class="PUNC">+</span><span class="PUNC">=</span><span class="STRN">'+'</span><span class="PUNC">+</span><span class="NAME">dQuote</span><span class="PUNC">(</span><span class="NAME">s.slice</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="NAME">len</span><span class="PUNC">)</span><span class="PUNC">)</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="NAME">s.substr</span><span class="PUNC">(</span><span class="NAME">len</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// '\n':NewLine</span><span class="WHIT">
<span class='line'>902</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">t.substr</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>903</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>904</span> </span><span class="WHIT"> </span><span class="COMM">//if(len){var t='';for(;s;)t+='t+='+dQuote(s.slice(0,len))+'\n',s=s.substr(len);return t.substr(3);} // test用</span><span class="WHIT">
<span class='line'>905</span> </span><span class="WHIT"> </span><span class="NAME">s</span><span class="PUNC">=</span><span class="NAME">s.replace</span><span class="PUNC">(</span><span class="REGX">/\\/g</span><span class="PUNC">,</span><span class="STRN">'\\\\'</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>906</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">replace</span><span class="PUNC">(</span><span class="REGX">/\r/g</span><span class="PUNC">,</span><span class="STRN">'\\r'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">replace</span><span class="PUNC">(</span><span class="REGX">/\n/g</span><span class="PUNC">,</span><span class="STRN">'\\n'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="COMM">// \b,\t,\f</span><span class="WHIT">
<span class='line'>907</span> </span><span class="WHIT"> </span><span class="COMM">// 轉換控制字符</span><span class="WHIT">
<span class='line'>908</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">replace</span><span class="PUNC">(</span><span class="REGX">/([\0-\37\x7f\xff])/g</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="PUNC">{</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c</span><span class="PUNC">=</span><span class="NAME">$1.charCodeAt</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">c</span><span class="PUNC">&lt;</span><span class="NUMB">64</span><span class="PUNC">?</span><span class="STRN">'\\'</span><span class="PUNC">+</span><span class="NAME">c.toString</span><span class="PUNC">(</span><span class="NUMB">8</span><span class="PUNC">)</span><span class="PUNC">:</span><span class="STRN">'\\x'</span><span class="PUNC">+</span><span class="PUNC">(</span><span class="NAME">c</span><span class="PUNC">&lt;</span><span class="NUMB">16</span><span class="PUNC">?</span><span class="STRN">'0'</span><span class="PUNC">:</span><span class="STRN">''</span><span class="PUNC">)</span><span class="PUNC">+</span><span class="NAME">c.toString</span><span class="PUNC">(</span><span class="NUMB">16</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="PUNC">}</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>909</span> </span><span class="WHIT"> </span><span class="COMM">//.replace(/([\u00000100-\uffffffff])/g,function($0,$1){})</span><span class="WHIT">
<span class='line'>910</span> </span><span class="WHIT"> </span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>911</span> </span><span class="WHIT"> </span><span class="COMM">//q=s.length;while(s.charAt(--q)==sp);s=s.slice(0,q+1);</span><span class="WHIT">
<span class='line'>912</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">s.indexOf</span><span class="PUNC">(</span><span class="NAME">q</span><span class="PUNC">=</span><span class="STRN">"'"</span><span class="PUNC">)</span><span class="PUNC">!=</span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="NAME">q</span><span class="PUNC">=</span><span class="STRN">'"'</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>913</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="NAME">s.indexOf</span><span class="PUNC">(</span><span class="NAME">q</span><span class="PUNC">)</span><span class="PUNC">!=</span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="NAME">s</span><span class="PUNC">=</span><span class="NAME">s.replace</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">q</span><span class="PUNC">=</span><span class="STRN">"'"</span><span class="PUNC">,</span><span class="STRN">'g'</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="STRN">"\\'"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// ,alert("Can't determine quotation mark, the resource may cause error.\n"+s);</span><span class="WHIT">
<span class='line'>914</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">q</span><span class="PUNC">+</span><span class="NAME">s</span><span class="PUNC">+</span><span class="NAME">q</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>915</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>916</span>
<span class='line'>917</span>
<span class='line'>918</span> </span><span class="NAME">CeL.native</span><span class="WHIT">
<span class='line'>919</span> </span><span class="PUNC">.</span><span class="WHIT">
<span class='line'>920</span> </span><span class="COMM">/**
<span class='line'>921</span> * check input string send to SQL server
<span class='line'>922</span> * @param {String} string input string
<span class='line'>923</span> * @return {String} 轉換過的 string
<span class='line'>924</span> * @since 2006/10/27 16:36
<span class='line'>925</span> * @see
<span class='line'>926</span> * from lib/perl/BaseF.pm (or program/database/BaseF.pm)
<span class='line'>927</span> * @memberOf CeL.native
<span class='line'>928</span> */</span><span class="WHIT">
<span class='line'>929</span> </span><span class="NAME">checkSQLInput</span><span class="PUNC">=</span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">string</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>930</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">string</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>931</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'>932</span>
<span class='line'>933</span> </span><span class="WHIT"> </span><span class="COMM">// 限制長度</span><span class="WHIT">
<span class='line'>934</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">maxInput</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">string.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NAME">maxInput</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>935</span> </span><span class="WHIT"> </span><span class="NAME">string</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">string.slice</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">maxInput</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>936</span>
<span class='line'>937</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">string</span><span class="WHIT">
<span class='line'>938</span> </span><span class="WHIT"> </span><span class="COMM">// for \uxxxx</span><span class="WHIT">
<span class='line'>939</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">replace</span><span class="PUNC">(</span><span class="REGX">/\\u([\da-f]{4})/g</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">$0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">$1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>940</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">String.fromCharCode</span><span class="PUNC">(</span><span class="NAME">$1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>941</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">replace</span><span class="PUNC">(</span><span class="REGX">/\\/g</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'\\\\'</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>942</span> </span><span class="WHIT"> </span><span class="WHIT">
<span class='line'>943</span> </span><span class="WHIT"> </span><span class="COMM">// .replace(/[\x00-\x31]/g,'')</span><span class="WHIT">
<span class='line'>944</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">replace</span><span class="PUNC">(</span><span class="REGX">/\x00/g</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'\\0'</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>945</span> </span><span class="WHIT"> </span><span class="WHIT">
<span class='line'>946</span> </span><span class="WHIT"> </span><span class="COMM">// .replace(/\x09/g,'\\t')</span><span class="WHIT">
<span class='line'>947</span> </span><span class="WHIT"> </span><span class="COMM">// .replace(/\x1a/g,'\\Z')</span><span class="WHIT">
<span class='line'>948</span> </span><span class="WHIT"> </span><span class="WHIT">
<span class='line'>949</span> </span><span class="WHIT"> </span><span class="COMM">// .replace(/\r\n/g,' ')</span><span class="WHIT">
<span class='line'>950</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">replace</span><span class="PUNC">(</span><span class="REGX">/\r/g</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'\\r'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">replace</span><span class="PUNC">(</span><span class="REGX">/\n/g</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'\\n'</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>951</span> </span><span class="WHIT"> </span><span class="WHIT">
<span class='line'>952</span> </span><span class="WHIT"> </span><span class="COMM">// .replace(/"/g,'\\"')</span><span class="WHIT">
<span class='line'>953</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">replace</span><span class="PUNC">(</span><span class="REGX">/'/g</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"''"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>954</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>955</span>
<span class='line'>956</span> </span><span class="COMM">/**
<span class='line'>957</span> * check input string send to SQL server 並去掉前後 space
<span class='line'>958</span> * @param {String} string input string
<span class='line'>959</span> * @return {String} 轉換過的 string
<span class='line'>960</span> * @since 2006/10/27 16:36
<span class='line'>961</span> * @see
<span class='line'>962</span> * from lib/perl/BaseF.pm (or program/database/BaseF.pm)
<span class='line'>963</span> * function strip() @ Prototype JavaScript framework
<span class='line'>964</span> * @memberOf CeL.native
<span class='line'>965</span> */</span><span class="WHIT">
<span class='line'>966</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">checkSQLInput_noSpace</span><span class="PUNC">(</span><span class="NAME">string</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>967</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">string</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">checkSQLInput</span><span class="PUNC">(</span><span class="NAME">string</span><span class="WHIT">
<span class='line'>968</span> </span><span class="WHIT"> </span><span class="COMM">// .replace(/[\s\n]+$|^[\s\n]+/g,'')</span><span class="WHIT">
<span class='line'>969</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">replace</span><span class="PUNC">(</span><span class="REGX">/^\s+|\s+$/g</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">''</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>970</span> </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'>971</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>972</span> </span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>973</span> </span><span class="COMM">/*
<span class='line'>974</span>
<span class='line'>975</span> 2010/6/1
<span class='line'>976</span> test time:
<span class='line'>977</span>
<span class='line'>978</span> ' fhdgjk lh gjkl ;sfdf d hf gj '
<span class='line'>979</span>
<span class='line'>980</span> .replace(/^\s+|\s+$/g, '')
<span class='line'>981</span> ~&lt;
<span class='line'>982</span> .replace(/\s+$|^\s+/g, '')
<span class='line'>983</span> &lt;
<span class='line'>984</span> .replace(/^\s+/, '').replace(/\s+$/, '')
<span class='line'>985</span> ~&lt;
<span class='line'>986</span> .replace(/\s+$/, '').replace(/^\s+/, '')
<span class='line'>987</span>
<span class='line'>988</span> */</span><span class="WHIT">
<span class='line'>989</span>
<span class='line'>990</span>
<span class='line'>991</span>
<span class='line'>992</span> </span><span class="NAME">CeL.native</span><span class="WHIT">
<span class='line'>993</span> </span><span class="PUNC">.</span><span class="WHIT">
<span class='line'>994</span> </span><span class="COMM">/**
<span class='line'>995</span> * 轉換字串成數值,包括分數等。分數亦將轉為分數。
<span class='line'>996</span> * @param {String} number 欲轉換之值
<span class='line'>997</span> * @return
<span class='line'>998</span> * @memberOf CeL.native
<span class='line'>999</span> */</span><span class="WHIT">
<span class='line'>1000</span> </span><span class="NAME">parse_number</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">number</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1001</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">m</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">number</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1002</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="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'number'</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>1003</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">number</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1004</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">number</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">'string'</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>1005</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">NaN</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1006</span>
<span class='line'>1007</span> </span><span class="WHIT"> </span><span class="NAME">number</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">number.replace</span><span class="PUNC">(</span><span class="REGX">/(\d),(\d)/g</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">'$1$2'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1008</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="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">number.match</span><span class="PUNC">(</span><span class="REGX">/(-?[\d.]+)\s+([\d.]+)\/([\d.]+)/</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1009</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">p</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">parseFloat</span><span class="PUNC">(</span><span class="NAME">m</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><span class="NAME">q</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">parseFloat</span><span class="PUNC">(</span><span class="NAME">m</span><span class="PUNC">[</span><span class="NUMB">2</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">/</span><span class="WHIT"> </span><span class="NAME">parseFloat</span><span class="PUNC">(</span><span class="NAME">m</span><span class="PUNC">[</span><span class="NUMB">3</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1010</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">p</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">m</span><span class="PUNC">[</span><span class="NUMB">1</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="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="PUNC">-</span><span class="NAME">q</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">q</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1011</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1012</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="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">number.match</span><span class="PUNC">(</span><span class="REGX">/(-?[\d.]+)\/([\d.]+)/</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>1013</span> </span><span class="WHIT"> </span><span class="COMM">// new quotient(m[1],m[2])</span><span class="WHIT">
<span class='line'>1014</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">parseFloat</span><span class="PUNC">(</span><span class="NAME">m</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">/</span><span class="WHIT"> </span><span class="NAME">parseFloat</span><span class="PUNC">(</span><span class="NAME">m</span><span class="PUNC">[</span><span class="NUMB">2</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1015</span>
<span class='line'>1016</span> </span><span class="COMM">/*
<span class='line'>1017</span> try {
<span class='line'>1018</span> return isNaN(m = parseFloat(number)) ?
<span class='line'>1019</span> // TODO: security hole
<span class='line'>1020</span> eval(number) : m;
<span class='line'>1021</span> } catch (e) {
<span class='line'>1022</span> return m;
<span class='line'>1023</span> }
<span class='line'>1024</span> */</span><span class="WHIT">
<span class='line'>1025</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1026</span>
<span class='line'>1027</span>
<span class='line'>1028</span>
<span class='line'>1029</span>
<span class='line'>1030</span>
<span class='line'>1031</span>
<span class='line'>1032</span> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="WHIT">
<span class='line'>1033</span> </span><span class="WHIT"> </span><span class="NAME">CeL.native</span><span class="WHIT">
<span class='line'>1034</span> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1035</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1036</span>
<span class='line'>1037</span> </span><span class="COMM">//===================================================</span><span class="WHIT">
<span class='line'>1038</span>
<span class='line'>1039</span> </span><span class="NAME">CeL.setup_module</span><span class="PUNC">(</span><span class="NAME">module_name</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">code_for_including</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1040</span>
<span class='line'>1041</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1042</span> </span></pre></body></html>