UNPKG

cejs

Version:

A JavaScript module framework that is simple to use.

386 lines 766 kB
<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="COMM">//&lt;![CDATA[</span><span class="WHIT"> <span class='line'> 2</span> <span class='line'> 3</span> <span class='line'> 4</span> </span><span class="COMM">/** <span class='line'> 5</span> * @name Colorless echo JavaScript kit/library base framework <span class='line'> 6</span> * @fileoverview <span class='line'> 7</span> * 本檔案包含了呼叫其他 library 需要用到的 function,以及常用 base functions。&lt;br/> <span class='line'> 8</span> * &lt;br/> <span class='line'> 9</span> * Copyright (C) 2002-, kanashimi &lt;kanasimi@gmail.com>. All Rights Reserved.&lt;br/> <span class='line'> 10</span> * &lt;br/> <span class='line'> 11</span> * This file is in tab wide of 4 chars, documentation with JsDoc Toolkit (&lt;a href="http://code.google.com/p/jsdoc-toolkit/wiki/TagReference">tags&lt;/a>).&lt;br/> <span class='line'> 12</span> * &lt;br/> <span class='line'> 13</span> * &lt;br/>Please visit &lt;a href="http://lyrics.meicho.com.tw/program/">Colorless echo program room&lt;/a> for more informations. <span class='line'> 14</span> * @since 自 function.js 0.2 改寫 <span class='line'> 15</span> * @since JavaScript 1.2 <span class='line'> 16</span> * @since 2009/11/17 01:02:36 <span class='line'> 17</span> * @author kanasimi@gmail.com <span class='line'> 18</span> * @version $Id: ce.js,v 0.2 2009/11/26 18:37:11 kanashimi $ <span class='line'> 19</span> */</span><span class="WHIT"> <span class='line'> 20</span> <span class='line'> 21</span> <span class='line'> 22</span> </span><span class="COMM">/* <span class='line'> 23</span> 引用:參照 <span class='line'> 24</span> function addCode <span class='line'> 25</span> <span class='line'> 26</span> 單一JS引用: <span class='line'> 27</span> // [function.js]_iF <span class='line'> 28</span> function _iF(){}_iF.p='HKCU\\Software\\Colorless echo\\function.js.path';if(typeof WScript=="object")try{eval(getU((new ActiveXObject("WScript.Shell")).RegRead(_iF.p)));}catch(e){} <span class='line'> 29</span> function getU(p,enc){var o;try{o=new ActiveXObject('Microsoft.XMLHTTP');}catch(e){o=new XMLHttpRequest();}if(o)with(o){open('GET',p,false);if(enc&&o.overrideMimeType)overrideMimeType('text/xml;charset='+enc);send(null);return responseText;}} <span class='line'> 30</span> // [function.js]End <span class='line'> 31</span> <span class='line'> 32</span> <span class='line'> 33</span> 初始化:參照 <span class='line'> 34</span> initialization of function.js <span class='line'> 35</span> <span class='line'> 36</span> &lt;script type="text/javascript" src="path/to/function.js">&lt;/script> <span class='line'> 37</span> &lt;script type="application/javascript;version=1.7" src="path/to/function.js">&lt;/script> <span class='line'> 38</span> <span class='line'> 39</span> <span class='line'> 40</span> */</span><span class="WHIT"> <span class='line'> 41</span> <span class='line'> 42</span> <span class='line'> 43</span> </span><span class="COMM">//try{</span><span class="WHIT"> <span class='line'> 44</span> <span class='line'> 45</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">CeL</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="STRN">'function'</span><span class="PUNC">)</span><span class="WHIT"> <span class='line'> 46</span> </span><span class="COMM">//void(</span><span class="WHIT"> <span class='line'> 47</span> </span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> <span class='line'> 48</span> <span class='line'> 49</span> </span><span class="KEYW">var</span><span class="WHIT"> <span class='line'> 50</span> </span><span class="WHIT"> </span><span class="COMM">/** <span class='line'> 51</span> * debug level <span class='line'> 52</span> * @ignore <span class='line'> 53</span> */</span><span class="WHIT"> <span class='line'> 54</span> </span><span class="WHIT"> </span><span class="NAME">debug</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="WHIT"> <span class='line'> 55</span> <span class='line'> 56</span> </span><span class="WHIT"> </span><span class="PUNC">,</span><span class="NAME">global</span><span class="WHIT"> <span class='line'> 57</span> <span class='line'> 58</span> </span><span class="WHIT"> </span><span class="COMM">//,window</span><span class="WHIT"> <span class='line'> 59</span> <span class='line'> 60</span> </span><span class="WHIT"> </span><span class="COMM">/** <span class='line'> 61</span> * Will speed up references to undefined, and allows redefining its name. (from jQuery) <span class='line'> 62</span> * 用在 return undefined <span class='line'> 63</span> */</span><span class="WHIT"> <span class='line'> 64</span> </span><span class="WHIT"> </span><span class="COMM">//,undefined</span><span class="WHIT"> <span class='line'> 65</span> <span class='line'> 66</span> </span><span class="WHIT"> </span><span class="PUNC">,</span><span class="NAME">_CeL</span><span class="WHIT"> <span class='line'> 67</span> <span class='line'> 68</span> </span><span class="WHIT"> </span><span class="PUNC">,</span><span class="NAME">CeL</span><span class="WHIT"> <span class='line'> 69</span> <span class='line'> 70</span> </span><span class="WHIT"> </span><span class="PUNC">,</span><span class="NAME">loaded_module</span><span class="WHIT"> <span class='line'> 71</span> <span class='line'> 72</span> </span><span class="WHIT"> </span><span class="COMM">//,_base_function_to_extend</span><span class="WHIT"> <span class='line'> 73</span> </span><span class="WHIT"> </span><span class="PUNC">;</span><span class="WHIT"> <span class='line'> 74</span> <span class='line'> 75</span> <span class='line'> 76</span> </span><span class="COMM">// members of library -----------------------------------------------</span><span class="WHIT"> <span class='line'> 77</span> </span><span class="PUNC">;</span><span class="WHIT"> <span class='line'> 78</span> <span class='line'> 79</span> <span class='line'> 80</span> </span><span class="COMM">/** <span class='line'> 81</span> * Global Scope object&lt;br/> <span class='line'> 82</span> * 於 CeL.eval 使用 <span class='line'> 83</span> * @ignore <span class='line'> 84</span> */</span><span class="WHIT"> <span class='line'> 85</span> </span><span class="NAME">global</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><span class="COMM">// isWeb()?window:this;</span><span class="WHIT"> <span class='line'> 86</span> <span class='line'> 87</span> <span class='line'> 88</span> </span><span class="COMM">/* <span class='line'> 89</span> var _Global=(function(){return this;})(); <span class='line'> 90</span> _Global.JustANumber=2; // var _GlobalPrototype=_Global.constructor.prototype;_GlobalPrototype.JustANumber=2; <span class='line'> 91</span> if(typeof _Global=='undefined')_Global=this; <span class='line'> 92</span> for(i in _Global)alert(i); <span class='line'> 93</span> */</span><span class="WHIT"> <span class='line'> 94</span> <span class='line'> 95</span> </span><span class="COMM">// 若已經定義過,跳過。</span><span class="WHIT"> <span class='line'> 96</span> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">global.CeL</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="STRN">'undefined'</span><span class="PUNC">)</span><span class="WHIT"> <span class='line'> 97</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT"> <span class='line'> 98</span> <span class='line'> 99</span> <span class='line'>100</span> </span><span class="COMM">/** <span class='line'>101</span> * Will speed up references to DOM: window, and allows redefining its name. (from jQuery) <span class='line'>102</span> * @ignore <span class='line'>103</span> */</span><span class="WHIT"> <span class='line'>104</span> </span><span class="COMM">//window = this;</span><span class="WHIT"> <span class='line'>105</span> <span class='line'>106</span> <span class='line'>107</span> </span><span class="COMM">/** <span class='line'>108</span> * 本 JavaScript framework 的框架基本宣告&lt;br/> <span class='line'>109</span> * base name-space declaration of JavaScript library framework <span class='line'>110</span> * @example <span class='line'>111</span> * // 判別是否已經 load 過 <span class='line'>112</span> * if(typeof CeL !== 'function' || CeL.Class !== 'CeL') <span class='line'>113</span> * ; // CeL has not been loaded <span class='line'>114</span> * @name CeL <span class='line'>115</span> * @class Colorless echo JavaScript kit/library: base name-space declaration <span class='line'>116</span> */</span><span class="WHIT"> <span class='line'>117</span> </span><span class="NAME">CeL</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> <span class='line'>118</span> </span><span class="WHIT"> </span><span class="COMM">// function CeL // declaration for debug</span><span class="WHIT"> <span class='line'>119</span> </span><span class="WHIT"> </span><span class="COMM">//this.global = arguments[0] || arguments.callee.ce_doc;</span><span class="WHIT"> <span class='line'>120</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="PUNC">(</span><span class="NAME">arguments.callee.init.apply</span><span class="PUNC">(</span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">arguments</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> <span class='line'>121</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT"> <span class='line'>122</span> <span class='line'>123</span> </span><span class="COMM">/** <span class='line'>124</span> * JavaScript library framework main class name. <span class='line'>125</span> * @see &lt;a href="http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf">ECMA-262&lt;/a>: Class: A string value indicating the kind of this object. <span class='line'>126</span> * @constant <span class='line'>127</span> */</span><span class="WHIT"> <span class='line'>128</span> </span><span class="NAME">CeL.Class</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'CeL'</span><span class="PUNC">;</span><span class="WHIT"> <span class='line'>129</span> <span class='line'>130</span> <span class='line'>131</span> </span><span class="COMM">/** <span class='line'>132</span> * Map over main name-space in case of overwrite (from jQuery) <span class='line'>133</span> * @ignore <span class='line'>134</span> */</span><span class="WHIT"> <span class='line'>135</span> </span><span class="NAME">_CeL</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">global.CeL</span><span class="PUNC">;</span><span class="WHIT"> <span class='line'>136</span> </span><span class="NAME">global</span><span class="PUNC">[</span><span class="NAME">CeL.Class</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">CeL</span><span class="PUNC">;</span><span class="WHIT"> <span class='line'>137</span> <span class='line'>138</span> <span class='line'>139</span> </span><span class="COMM">/** <span class='line'>140</span> * framework main prototype definition <span class='line'>141</span> * for JSDT: 有 prototype 才會將之當作 Class <span class='line'>142</span> */</span><span class="WHIT"> <span class='line'>143</span> </span><span class="NAME">CeL.prototype</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> <span class='line'>144</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT"> <span class='line'>145</span> <span class='line'>146</span> <span class='line'>147</span> <span class='line'>148</span> <span class='line'>149</span> </span><span class="COMM">// 取得執行script之path,在.hta中取代 WScript.ScriptFullName,%20的部分最好再加其他的…</span><span class="WHIT"> <span class='line'>150</span> </span><span class="NAME">CeL.get_script_full_name</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> <span class='line'>151</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">WScript</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'object'</span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">WScript.ScriptFullName</span><span class="WHIT"> <span class='line'>152</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="NAME">location</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'object'</span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">unescape</span><span class="PUNC">(</span><span class="NAME">location.pathname</span><span class="PUNC">)</span><span class="WHIT"> <span class='line'>153</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'>154</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT"> <span class='line'>155</span> </span><span class="COMM">// 取得執行script之名稱</span><span class="WHIT"> <span class='line'>156</span> </span><span class="NAME">CeL.get_script_name</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> <span class='line'>157</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">n</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">j</span><span class="PUNC">;</span><span class="WHIT"> <span class='line'>158</span> <span class='line'>159</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">WScript</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'object'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> <span class='line'>160</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="NAME">WScript.ScriptName</span><span class="PUNC">;</span><span class="WHIT"> <span class='line'>161</span> </span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">n.lastIndexOf</span><span class="PUNC">(</span><span class="STRN">'.'</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">return</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</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="NAME">n.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 class='line'>163</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> <span class='line'>164</span> <span class='line'>165</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">location</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'object'</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> <span class='line'>166</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="NAME">unescape</span><span class="PUNC">(</span><span class="NAME">location.pathname</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">j</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">n.lastIndexOf</span><span class="PUNC">(</span><span class="STRN">'.'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> <span class='line'>167</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">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">n.lastIndexOf</span><span class="PUNC">(</span><span class="STRN">'\\'</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'>168</span> </span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">n.lastIndexOf</span><span class="PUNC">(</span><span class="STRN">'/'</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="COMM">// location.pathname在.hta中會回傳'\'形式的path</span><span class="WHIT"> <span class='line'>169</span> </span><span class="WHIT"> </span><span class="KEYW">return</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">j</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">n.slice</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">j</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">n.substr</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> <span class='line'>170</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> <span class='line'>171</span> <span class='line'>172</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">document</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'object'</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">document.title</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'>173</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT"> <span class='line'>174</span> <span class='line'>175</span> <span class='line'>176</span> <span class='line'>177</span> <span class='line'>178</span> </span><span class="COMM">/** <span class='line'>179</span> * 取得/設定環境變數 enumeration&lt;br/> <span class='line'>180</span> * (雖然不喜歡另開 namespace,但以 2009 當下的 JsDoc Toolkit 來說,似乎沒辦法創造 enumeration。) <span class='line'>181</span> * @class 環境變數 (environment variables) 與程式會用到的 library 相關變數。 <span class='line'>182</span> * @param name 環境變數名稱 <span class='line'>183</span> * @param value 環境變數之值 <span class='line'>184</span> * @return 舊環境變數之值 <span class='line'>185</span> */</span><span class="WHIT"> <span class='line'>186</span> </span><span class="NAME">CeL.env</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">name</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">value</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> <span class='line'>187</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">name</span><span class="PUNC">)</span><span class="WHIT"> <span class='line'>188</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">;</span><span class="WHIT"> <span class='line'>189</span> <span class='line'>190</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">_s</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">v</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">name</span><span class="PUNC">]</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="NAME">arguments.length</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'>192</span> </span><span class="WHIT"> </span><span class="NAME">_s</span><span class="PUNC">[</span><span class="NAME">name</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">value</span><span class="PUNC">;</span><span class="WHIT"> <span class='line'>193</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">isNaN</span><span class="PUNC">(</span><span class="NAME">v</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</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'>194</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT"> <span class='line'>195</span> <span class='line'>196</span> </span><span class="COMM">/** <span class='line'>197</span> * Setup environment variables <span class='line'>198</span> * @param {string}[OS_type] type of OS <span class='line'>199</span> * @return environment variables set <span class='line'>200</span> */</span><span class="WHIT"> <span class='line'>201</span> </span><span class="NAME">CeL.initial_env</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">OS_type</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> <span class='line'>202</span> </span><span class="WHIT"> </span><span class="COMM">//this.env = {};</span><span class="WHIT"> <span class='line'>203</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">OS</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">env</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.env</span><span class="PUNC">;</span><span class="WHIT"> <span class='line'>204</span> <span class='line'>205</span> </span><span class="WHIT"> </span><span class="COMM">/** <span class='line'>206</span> * library main file base name&lt;br/> <span class='line'>207</span> * full path: {@link CeL.env.registry_path} + {@link CeL.env.main_script} <span class='line'>208</span> * @name CeL.env.main_script <span class='line'>209</span> */</span><span class="WHIT"> <span class='line'>210</span> </span><span class="WHIT"> </span><span class="NAME">env.main_script</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'ce.js'</span><span class="PUNC">;</span><span class="WHIT"> <span class='line'>211</span> <span class='line'>212</span> </span><span class="WHIT"> </span><span class="COMM">/** <span class='line'>213</span> * module 中的這 member 定義了哪些 member 不被 extend <span class='line'>214</span> * @name CeL.env.not_to_extend_keyword <span class='line'>215</span> */</span><span class="WHIT"> <span class='line'>216</span> </span><span class="WHIT"> </span><span class="NAME">env.not_to_extend_keyword</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'no_extend'</span><span class="PUNC">;</span><span class="WHIT"> <span class='line'>217</span> <span class='line'>218</span> </span><span class="WHIT"> </span><span class="COMM">/** <span class='line'>219</span> * 本 library source 檔案使用之 encoding&lt;br/> <span class='line'>220</span> * 不使用會產生語法錯誤 <span class='line'>221</span> * @name CeL.env.source_encoding <span class='line'>222</span> */</span><span class="WHIT"> <span class='line'>223</span> </span><span class="WHIT"> </span><span class="NAME">env.source_encoding</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'UTF-16'</span><span class="PUNC">;</span><span class="WHIT"> <span class='line'>224</span> <span class='line'>225</span> </span><span class="WHIT"> </span><span class="COMM">/** <span class='line'>226</span> * default global object <span class='line'>227</span> * @name CeL.env.global <span class='line'>228</span> */</span><span class="WHIT"> <span class='line'>229</span> </span><span class="WHIT"> </span><span class="NAME">env.global</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">global</span><span class="PUNC">;</span><span class="WHIT"> <span class='line'>230</span> <span class='line'>231</span> </span><span class="WHIT"> </span><span class="COMM">/** <span class='line'>232</span> * creator group <span class='line'>233</span> * @name CeL.env.company <span class='line'>234</span> */</span><span class="WHIT"> <span class='line'>235</span> </span><span class="WHIT"> </span><span class="NAME">env.company</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'Colorless echo'</span><span class="PUNC">;</span><span class="WHIT"> <span class='line'>236</span> </span><span class="WHIT"> </span><span class="NAME">env.registry_key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">'HKCU\\Software\\'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">env.company</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">this.Class</span><span class="WHIT"> <span class='line'>237</span> </span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'.path'</span><span class="PUNC">;</span><span class="WHIT"> <span class='line'>238</span> </span><span class="WHIT"> </span><span class="COMM">//if(typeof WScript==='object')</span><span class="WHIT"> <span class='line'>239</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'>240</span> </span><span class="WHIT"> </span><span class="COMM">/** <span class='line'>241</span> * 存放在 registry 中的 path <span class='line'>242</span> * @name CeL.env.registry_path <span class='line'>243</span> */</span><span class="WHIT"> <span class='line'>244</span> </span><span class="WHIT"> </span><span class="NAME">env.registry_path</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">WScript.CreateObject</span><span class="PUNC">(</span><span class="STRN">"WScript.Shell"</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> <span class='line'>245</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">RegRead</span><span class="PUNC">(</span><span class="NAME">env.registry_key</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'>246</span> </span><span class="WHIT"> </span><span class="COMM">// this.log(env.registry_path);</span><span class="WHIT"> <span class='line'>247</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'>248</span> </span><span class="WHIT"> </span><span class="COMM">// this.log(e.message);</span><span class="WHIT"> <span class='line'>249</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> <span class='line'>250</span> <span class='line'>251</span> <span class='line'>252</span> </span><span class="WHIT"> </span><span class="COMM">//條件式編譯(条件コンパイル) for version>=4, 用 /*@ and @*/ to 判別</span><span class="WHIT"> <span class='line'>253</span> </span><span class="WHIT"> </span><span class="COMM">/*@cc_on <span class='line'>254</span> @if(@_PowerPC||@_mac) <span class='line'>255</span> OS='Mac'; <span class='line'>256</span> @else <span class='line'>257</span> @if(@_win32||@_win64||@_win16) <span class='line'>258</span> OS='DOS'; <span class='line'>259</span> @else <span class='line'>260</span> OS='unix'; // unknown <span class='line'>261</span> @end <span class='line'>262</span> @end@*/</span><span class="WHIT"> <span class='line'>263</span> <span class='line'>264</span> </span><span class="WHIT"> </span><span class="COMM">/** <span class='line'>265</span> * 本次執行所在 OS 平台 <span class='line'>266</span> * @name CeL.env.OS <span class='line'>267</span> */</span><span class="WHIT"> <span class='line'>268</span> </span><span class="WHIT"> </span><span class="NAME">env.OS</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">OS</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">OS_type</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">OS_type</span><span class="WHIT"> <span class='line'>269</span> </span><span class="WHIT"> </span><span class="COMM">// 假如未設定則取預設值</span><span class="WHIT"> <span class='line'>270</span> </span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">OS</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="STRN">'unix'</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> <span class='line'>271</span> <span class='line'>272</span> </span><span class="WHIT"> </span><span class="COMM">/** <span class='line'>273</span> * 文件預設 new line <span class='line'>274</span> * @name CeL.env.new_line <span class='line'>275</span> */</span><span class="WHIT"> <span class='line'>276</span> </span><span class="WHIT"> </span><span class="NAME">env.new_line</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">OS</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'unix'</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="STRN">'\n'</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">OS</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'Mac'</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="STRN">'\r'</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">'\r\n'</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// in VB: vbCrLf</span><span class="WHIT"> <span class='line'>277</span> </span><span class="WHIT"> </span><span class="COMM">/** <span class='line'>278</span> * file system 預設 path separator&lt;br/> <span class='line'>279</span> * platform-dependent path separator character, 決定目錄(directory)分隔 <span class='line'>280</span> * @name CeL.env.path_separator <span class='line'>281</span> */</span><span class="WHIT"> <span class='line'>282</span> </span><span class="WHIT"> </span><span class="NAME">env.path_separator</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">OS</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">'unix'</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 class='line'>283</span> </span><span class="WHIT"> </span><span class="COMM">/** <span class='line'>284</span> * 預設 module name separator <span class='line'>285</span> * @name CeL.env.module_name_separator <span class='line'>286</span> */</span><span class="WHIT"> <span class='line'>287</span> </span><span class="WHIT"> </span><span class="NAME">env.module_name_separator</span><span class="PUNC">=</span><span class="STRN">'.'</span><span class="PUNC">;</span><span class="WHIT"> <span class='line'>288</span> </span><span class="WHIT"> </span><span class="COMM">/** <span class='line'>289</span> * path_separator in 通用(regular)運算式 <span class='line'>290</span> * @name CeL.env.path_separator_RegExp <span class='line'>291</span> */</span><span class="WHIT"> <span class='line'>292</span> </span><span class="WHIT"> </span><span class="NAME">env.path_separator_RegExp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.to_RegExp_pattern</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="WHIT"> <span class='line'>293</span> </span><span class="WHIT"> </span><span class="PUNC">.</span><span class="NAME">to_RegExp_pattern</span><span class="PUNC">(</span><span class="NAME">env.path_separator</span><span class="PUNC">)</span><span class="WHIT"> <span class='line'>294</span> </span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">env.path_separator</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="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">env.path_separator</span><span class="PUNC">;</span><span class="WHIT"> <span class='line'>295</span> </span><span class="WHIT"> </span><span class="COMM">/** <span class='line'>296</span> * 預設語系 <span class='line'>297</span> * 0x404:中文-台灣,0x0411:日文-日本 <span class='line'>298</span> * @name CeL.env.locale <span class='line'>299</span> * @see &lt;a href="http://msdn.microsoft.com/zh-tw/library/system.globalization.cultureinfo(VS.80).aspx">CultureInfo 類別&lt;/a> <span class='line'>300</span> */</span><span class="WHIT"> <span class='line'>301</span> </span><span class="WHIT"> </span><span class="NAME">env.locale</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x404</span><span class="PUNC">;</span><span class="WHIT"> <span class='line'>302</span> <span class='line'>303</span> </span><span class="WHIT"> </span><span class="COMM">/** <span class='line'>304</span> * script name <span class='line'>305</span> * @name CeL.env.script_name <span class='line'>306</span> */</span><span class="WHIT"> <span class='line'>307</span> </span><span class="WHIT"> </span><span class="NAME">env.script_name</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.get_script_name</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> <span class='line'>308</span> </span><span class="WHIT"> </span><span class="COMM">/** <span class='line'>309</span> * base path of library <span class='line'>310</span> * @name CeL.env.library_base_path <span class='line'>311</span> */</span><span class="WHIT"> <span class='line'>312</span> </span><span class="WHIT"> </span><span class="NAME">env.library_base_path</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.get_script_full_name</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// 以reg代替</span><span class="WHIT"> <span class='line'>313</span> <span class='line'>314</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">env</span><span class="PUNC">;</span><span class="WHIT"> <span class='line'>315</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT"> <span class='line'>316</span> <span class='line'>317</span> <span class='line'>318</span> <span class='line'>319</span> <span class='line'>320</span> </span><span class="COMM">/** <span class='line'>321</span> * Tell if it's now debugging. <span class='line'>322</span> * @param {int}[debug_level] if it's now in this debug level. <span class='line'>323</span> * @type boolean <span class='line'>324</span> * @return It's now debugging or in specified debug level. <span class='line'>325</span> */</span><span class="WHIT"> <span class='line'>326</span> </span><span class="NAME">CeL.is_debug</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">debug_level</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> <span class='line'>327</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="WHIT"> </span><span class="NAME">debug_level</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'undefined'</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">debug</span><span class="WHIT"> <span class='line'>328</span> </span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">debug</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">debug_level</span><span class="PUNC">;</span><span class="WHIT"> <span class='line'>329</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT"> <span class='line'>330</span> <span class='line'>331</span> </span><span class="COMM">/** <span class='line'>332</span> * Set debug level <span class='line'>333</span> * @param {int}[debug_level] The debug level to set. <span class='line'>334</span> * @type int <span class='line'>335</span> * @return debug level now <span class='line'>336</span> */</span><span class="WHIT"> <span class='line'>337</span> </span><span class="NAME">CeL.set_debug</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">debug_level</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> <span class='line'>338</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">debug_level</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'undefined'</span><span class="PUNC">)</span><span class="WHIT"> <span class='line'>339</span> </span><span class="WHIT"> </span><span class="NAME">debug_level</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'>340</span> <span class='line'>341</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">isNaN</span><span class="PUNC">(</span><span class="NAME">debug_level</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> <span class='line'>342</span> </span><span class="WHIT"> </span><span class="NAME">debug</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">debug_level</span><span class="PUNC">;</span><span class="WHIT"> <span class='line'>343</span> <span class='line'>344</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">debug</span><span class="PUNC">;</span><span class="WHIT"> <span class='line'>345</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT"> <span class='line'>346</span> <span class='line'>347</span> <span class='line'>348</span> </span><span class="COMM">/* <span class='line'>349</span> CeL.extend(function f_name(){}, object || string, initial arguments); <span class='line'>350</span> CeL.extend({name:function(){},.. }, object || string); <span class='line'>351</span> CeL.extend([function1,function12,..], object || string); <span class='line'>352</span> <span class='line'>353</span> set .name <span class='line'>354</span> */</span><span class="WHIT"> <span class='line'>355</span> <span class='line'>356</span> </span><span class="COMM">/** <span class='line'>357</span> * 延展物件 (learned from jQuery) <span class='line'>358</span> * @since 2009/11/25 21:17:44 <span class='line'>359</span> * @param variable_set variable set <span class='line'>360</span> * @param namespace extend to what namespace <span class='line'>361</span> * @param from_namespace When inputing function names, we need a base namespace to search these functions. <span class='line'>362</span> * @return CeL <span class='line'>363</span> * @see &lt;a href="http://blog.darkthread.net/blogs/darkthreadtw/archive/2009/03/01/jquery-extend.aspx" accessdate="2009/11/17 1:24" title="jQuery.extend的用法 - 黑暗執行緒">jQuery.extend的用法&lt;/a> <span class='line'>364</span> */</span><span class="WHIT"> <span class='line'>365</span> </span><span class="NAME">CeL.extend</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">variable_set</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">namespace</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">from_namespace</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT"> <span class='line'>366</span> </span><span class="COMM">/* <span class='line'>367</span> if(this.is_debug()) <span class='line'>368</span> throw new Error(1, 'UNDO'); <span class='line'>369</span> */</span><span class="WHIT"> <span class='line'>370</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">_s</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">l</span><span class="PUNC">;</span><span class="WHIT"> <span class='line'>371</span> <span class='line'>372</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">namespace</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'undefined'</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">namespace</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> <span class='line'>373</span> </span><span class="WHIT"> </span><span class="NAME">namespace</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'>374</span> <span class='line'>375</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">from_namespace</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">'undefined'</span><span class="PUNC">)</span><span class="WHIT"> <span class='line'>376</span> </span><span class="WHIT"> </span><span class="NAME">from_namespace</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'>377</span> <span class='line'>378</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">variable_set</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'>379</span> </span><span class="WHIT"> </span><span class="K