Fix #5718 - Change the order / layout of tabs. / new master lists
[roojs1] / docs / src / Roo_DomTemplate.js.html
1 <html><head><title>/home/edward/gitlive/roojs1/Roo/DomTemplate.js</title><link rel="stylesheet" type="text/css" href="../../css/highlight-js.css"/></head><body class="highlightpage"><code class="jsdoc-pretty"><span class="jsdoc-comment">/*
2  * Based on:
3  * Roo JS
4  * (c)) Alan Knowles
5  * Licence : LGPL
6  */
7
8
9 /**
10  * @class Roo.DomTemplate
11  * @extends Roo.Template
12  * An effort at a dom based template engine..
13  *
14  * Similar to XTemplate, except it uses dom parsing to create the template..
15  *
16  * Supported features:
17  *
18  *  Tags:
19
20 &lt;pre&gt;&lt;code&gt;
21       {a_variable} - output encoded.
22       {a_variable.format:(&quot;Y-m-d&quot;)} - call a method on the variable
23       {a_variable:raw} - unencoded output
24       {a_variable:toFixed(1,2)} - Roo.util.Format.&quot;toFixed&quot;
25       {a_variable:this.method_on_template(...)} - call a method on the template object.
26  
27 &lt;/code&gt;&lt;/pre&gt;
28  *  The tpl tag:
29 &lt;pre&gt;&lt;code&gt;
30         &amp;lt;div roo-for=&quot;a_variable or condition..&quot;&amp;gt;&amp;lt;/div&amp;gt;
31         &amp;lt;div roo-if=&quot;a_variable or condition&quot;&amp;gt;&amp;lt;/div&amp;gt;
32         &amp;lt;div roo-exec=&quot;some javascript&quot;&amp;gt;&amp;lt;/div&amp;gt;
33         &amp;lt;div roo-name=&quot;named_template&quot;&amp;gt;&amp;lt;/div&amp;gt; 
34   
35 &lt;/code&gt;&lt;/pre&gt;
36  *      
37  */
38 </span><span class="jsdoc-var">Roo.DomTemplate </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
39 {
40      </span><span class="jsdoc-var">Roo.DomTemplate.superclass.constructor.apply</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">arguments</span><span class="jsdoc-syntax">);
41      </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.html</span><span class="jsdoc-syntax">) {
42         </span><span class="jsdoc-var">this.compile</span><span class="jsdoc-syntax">();
43      }
44 };
45
46
47 </span><span class="jsdoc-var">Roo.extend</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.DomTemplate</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">Roo.Template</span><span class="jsdoc-syntax">, {
48     </span><span class="jsdoc-comment">/**
49      * id counter for sub templates.
50      */
51     </span><span class="jsdoc-var">id </span><span class="jsdoc-syntax">: 0,
52     </span><span class="jsdoc-comment">/**
53      * flag to indicate if dom parser is inside a pre,
54      * it will strip whitespace if not.
55      */
56     </span><span class="jsdoc-var">inPre </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
57
58     </span><span class="jsdoc-comment">/**
59      * The various sub templates
60      */
61     </span><span class="jsdoc-var">tpls </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
62
63
64
65     </span><span class="jsdoc-comment">/**
66      *
67      * basic tag replacing syntax
68      * WORD:WORD()
69      *
70      * // you can fake an object call by doing this
71      *  x.t:(test,tesT) 
72      * 
73      */
74     </span><span class="jsdoc-var">re </span><span class="jsdoc-syntax">: /(\{|\%7B)([\w-\.]+)(?:\:([\w\.]*)(?:\(([^)]*?)?\))?)?(\}|\%7D)/g,
75     </span><span class="jsdoc-comment">//re : /\{([\w-\.]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?\}/g,
76
77     </span><span class="jsdoc-var">iterChild </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">method</span><span class="jsdoc-syntax">) {
78
79         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">oldPre </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.inPre</span><span class="jsdoc-syntax">;
80         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node.tagName </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'PRE'</span><span class="jsdoc-syntax">) {
81             </span><span class="jsdoc-var">this.inPre </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
82         }
83         </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">( </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">node.childNodes.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++) {
84             </span><span class="jsdoc-var">method.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">node.childNodes</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]);
85         }
86         </span><span class="jsdoc-var">this.inPre </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">oldPre</span><span class="jsdoc-syntax">;
87     },
88
89
90
91     </span><span class="jsdoc-comment">/**
92      * compile the template
93      *
94      * This is not recursive, so I'm not sure how nested templates are really going to be handled..
95      *
96      */
97     </span><span class="jsdoc-var">compile</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
98     {
99         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">s </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.html</span><span class="jsdoc-syntax">;
100
101         </span><span class="jsdoc-comment">// covert the html into DOM...
102         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">doc </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
103         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">div </span><span class="jsdoc-syntax">=</span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
104         </span><span class="jsdoc-keyword">try </span><span class="jsdoc-syntax">{
105             </span><span class="jsdoc-var">doc </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">document.implementation.createHTMLDocument</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;&quot;</span><span class="jsdoc-syntax">);
106             </span><span class="jsdoc-var">doc.documentElement.innerHTML </span><span class="jsdoc-syntax">=   </span><span class="jsdoc-var">this.html  </span><span class="jsdoc-syntax">;
107             </span><span class="jsdoc-var">div </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">doc.documentElement</span><span class="jsdoc-syntax">;
108         } </span><span class="jsdoc-keyword">catch </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">) {
109             </span><span class="jsdoc-comment">// old IE... - nasty -- it causes all sorts of issues.. with
110             // images getting pulled from server..
111             </span><span class="jsdoc-var">div </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">document.createElement</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'div'</span><span class="jsdoc-syntax">);
112             </span><span class="jsdoc-var">div.innerHTML </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.html</span><span class="jsdoc-syntax">;
113         }
114         </span><span class="jsdoc-comment">//doc.documentElement.innerHTML = htmlBody
115
116
117
118         </span><span class="jsdoc-var">this.tpls </span><span class="jsdoc-syntax">= [];
119         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">_t </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">;
120         </span><span class="jsdoc-var">this.iterChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">div</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">) {</span><span class="jsdoc-var">_t.compileNode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">); });
121
122         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">tpls </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.tpls</span><span class="jsdoc-syntax">;
123
124         </span><span class="jsdoc-comment">// create a top level template from the snippet..
125
126         //Roo.log(div.innerHTML);
127
128         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">tpl </span><span class="jsdoc-syntax">= {
129             </span><span class="jsdoc-var">uid </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'master'</span><span class="jsdoc-syntax">,
130             </span><span class="jsdoc-var">id </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">this.id</span><span class="jsdoc-syntax">++,
131             </span><span class="jsdoc-var">attr </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
132             </span><span class="jsdoc-var">value </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
133             </span><span class="jsdoc-var">body </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">div.innerHTML</span><span class="jsdoc-syntax">,
134
135             </span><span class="jsdoc-var">forCall </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
136             </span><span class="jsdoc-var">execCall </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
137             </span><span class="jsdoc-var">dom </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">div</span><span class="jsdoc-syntax">,
138             </span><span class="jsdoc-var">isTop </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true
139
140         </span><span class="jsdoc-syntax">};
141         </span><span class="jsdoc-var">tpls.unshift</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tpl</span><span class="jsdoc-syntax">);
142
143
144         </span><span class="jsdoc-comment">// compile them...
145         </span><span class="jsdoc-var">this.tpls </span><span class="jsdoc-syntax">= [];
146         </span><span class="jsdoc-var">Roo.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tpls</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tp</span><span class="jsdoc-syntax">){
147             </span><span class="jsdoc-var">this.compileTpl</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tp</span><span class="jsdoc-syntax">);
148             </span><span class="jsdoc-var">this.tpls</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">tp.id</span><span class="jsdoc-syntax">] = </span><span class="jsdoc-var">tp</span><span class="jsdoc-syntax">;
149         }, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
150
151         </span><span class="jsdoc-var">this.master </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">tpls</span><span class="jsdoc-syntax">[0];
152         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">;
153
154
155     },
156
157     </span><span class="jsdoc-var">compileNode </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">istop</span><span class="jsdoc-syntax">) {
158         </span><span class="jsdoc-comment">// test for
159         //Roo.log(node);
160
161
162         // skip anything not a tag..
163         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node.nodeType </span><span class="jsdoc-syntax">!= 1) {
164             </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node.nodeType </span><span class="jsdoc-syntax">== 3 &amp;&amp; !</span><span class="jsdoc-var">this.inPre</span><span class="jsdoc-syntax">) {
165                 </span><span class="jsdoc-comment">// reduce white space..
166                 </span><span class="jsdoc-var">node.nodeValue </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">node.nodeValue.replace</span><span class="jsdoc-syntax">(/\s+/g, </span><span class="jsdoc-string">' '</span><span class="jsdoc-syntax">);
167
168             }
169             </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
170         }
171
172         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">tpl </span><span class="jsdoc-syntax">= {
173             </span><span class="jsdoc-var">uid </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
174             </span><span class="jsdoc-var">id </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
175             </span><span class="jsdoc-var">attr </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
176             </span><span class="jsdoc-var">value </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
177             </span><span class="jsdoc-var">body </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">,
178
179             </span><span class="jsdoc-var">forCall </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
180             </span><span class="jsdoc-var">execCall </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
181             </span><span class="jsdoc-var">dom </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
182             </span><span class="jsdoc-var">isTop </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">istop
183
184
185         </span><span class="jsdoc-syntax">};
186
187
188         </span><span class="jsdoc-keyword">switch</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">) {
189             </span><span class="jsdoc-keyword">case </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node.hasAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'roo-for'</span><span class="jsdoc-syntax">)): </span><span class="jsdoc-var">tpl.attr </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">'for'</span><span class="jsdoc-syntax">; </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
190             </span><span class="jsdoc-keyword">case </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node.hasAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'roo-if'</span><span class="jsdoc-syntax">)): </span><span class="jsdoc-var">tpl.attr </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">'if'</span><span class="jsdoc-syntax">; </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
191             </span><span class="jsdoc-keyword">case </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node.hasAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'roo-name'</span><span class="jsdoc-syntax">)): </span><span class="jsdoc-var">tpl.attr </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">'name'</span><span class="jsdoc-syntax">; </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
192             </span><span class="jsdoc-keyword">case </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node.hasAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'roo-exec'</span><span class="jsdoc-syntax">)): </span><span class="jsdoc-var">tpl.attr </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">'exec'</span><span class="jsdoc-syntax">; </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
193             </span><span class="jsdoc-comment">// no default..
194         </span><span class="jsdoc-syntax">}
195
196
197         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">tpl.attr</span><span class="jsdoc-syntax">) {
198             </span><span class="jsdoc-comment">// just itterate children..
199             </span><span class="jsdoc-var">this.iterChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">this.compileNode</span><span class="jsdoc-syntax">);
200             </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
201         }
202         </span><span class="jsdoc-var">tpl.uid </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.id</span><span class="jsdoc-syntax">++;
203         </span><span class="jsdoc-var">tpl.value </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">node.getAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'roo-' </span><span class="jsdoc-syntax">+  </span><span class="jsdoc-var">tpl.attr</span><span class="jsdoc-syntax">);
204         </span><span class="jsdoc-var">node.removeAttribute</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'roo-'</span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">tpl.attr</span><span class="jsdoc-syntax">);
205         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tpl.attr </span><span class="jsdoc-syntax">!= </span><span class="jsdoc-string">'name'</span><span class="jsdoc-syntax">) {
206             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">placeholder </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">document.createTextNode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'{domtpl' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">tpl.uid </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'}'</span><span class="jsdoc-syntax">);
207             </span><span class="jsdoc-var">node.parentNode.replaceChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">placeholder</span><span class="jsdoc-syntax">,  </span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">);
208         } </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
209
210             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">placeholder </span><span class="jsdoc-syntax">=  </span><span class="jsdoc-var">document.createElement</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'span'</span><span class="jsdoc-syntax">);
211             </span><span class="jsdoc-var">placeholder.className </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">'roo-tpl-' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">tpl.value</span><span class="jsdoc-syntax">;
212             </span><span class="jsdoc-var">node.parentNode.replaceChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">placeholder</span><span class="jsdoc-syntax">,  </span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">);
213         }
214
215         </span><span class="jsdoc-comment">// parent now sees '{domtplXXXX}
216         </span><span class="jsdoc-var">this.iterChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">this.compileNode</span><span class="jsdoc-syntax">);
217
218         </span><span class="jsdoc-comment">// we should now have node body...
219         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">div </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">document.createElement</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'div'</span><span class="jsdoc-syntax">);
220         </span><span class="jsdoc-var">div.appendChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">);
221         </span><span class="jsdoc-var">tpl.dom </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">;
222         </span><span class="jsdoc-comment">// this has the unfortunate side effect of converting tagged attributes
223         // eg. href=&quot;{...}&quot; into %7C...%7D
224         // this has been fixed by searching for those combo's although it's a bit hacky..
225
226
227         </span><span class="jsdoc-var">tpl.body </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">div.innerHTML</span><span class="jsdoc-syntax">;
228
229
230
231         </span><span class="jsdoc-var">tpl.id </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">tpl.uid</span><span class="jsdoc-syntax">;
232         </span><span class="jsdoc-keyword">switch</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tpl.attr</span><span class="jsdoc-syntax">) {
233             </span><span class="jsdoc-keyword">case </span><span class="jsdoc-string">'for' </span><span class="jsdoc-syntax">:
234                 </span><span class="jsdoc-keyword">switch </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tpl.value</span><span class="jsdoc-syntax">) {
235                     </span><span class="jsdoc-keyword">case </span><span class="jsdoc-string">'.'</span><span class="jsdoc-syntax">:  </span><span class="jsdoc-var">tpl.forCall </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'values'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'parent'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'with(values){ return values; }'</span><span class="jsdoc-syntax">); </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
236                     </span><span class="jsdoc-keyword">case </span><span class="jsdoc-string">'..'</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">tpl.forCall</span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'values'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'parent'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'with(values){ return parent; }'</span><span class="jsdoc-syntax">); </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
237                     </span><span class="jsdoc-keyword">default</span><span class="jsdoc-syntax">:   </span><span class="jsdoc-var">tpl.forCall</span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'values'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'parent'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'with(values){ return '</span><span class="jsdoc-syntax">+</span><span class="jsdoc-var">tpl.value</span><span class="jsdoc-syntax">+</span><span class="jsdoc-string">'; }'</span><span class="jsdoc-syntax">);
238                 }
239                 </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
240
241             </span><span class="jsdoc-keyword">case </span><span class="jsdoc-string">'exec'</span><span class="jsdoc-syntax">:
242                 </span><span class="jsdoc-var">tpl.execCall </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'values'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'parent'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'with(values){ '</span><span class="jsdoc-syntax">+(</span><span class="jsdoc-var">Roo.util.Format.htmlDecode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tpl.value</span><span class="jsdoc-syntax">))+</span><span class="jsdoc-string">'; }'</span><span class="jsdoc-syntax">);
243                 </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
244
245             </span><span class="jsdoc-keyword">case </span><span class="jsdoc-string">'if'</span><span class="jsdoc-syntax">:
246                 </span><span class="jsdoc-var">tpl.ifCall </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'values'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'parent'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'with(values){ return '</span><span class="jsdoc-syntax">+(</span><span class="jsdoc-var">Roo.util.Format.htmlDecode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tpl.value</span><span class="jsdoc-syntax">))+</span><span class="jsdoc-string">'; }'</span><span class="jsdoc-syntax">);
247                 </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
248
249             </span><span class="jsdoc-keyword">case </span><span class="jsdoc-string">'name'</span><span class="jsdoc-syntax">:
250                 </span><span class="jsdoc-var">tpl.id  </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">tpl.value</span><span class="jsdoc-syntax">; </span><span class="jsdoc-comment">// replace non characters???
251                 </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
252
253         }
254
255
256         </span><span class="jsdoc-var">this.tpls.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tpl</span><span class="jsdoc-syntax">);
257
258
259
260     },
261
262
263
264
265     </span><span class="jsdoc-comment">/**
266      * Compile a segment of the template into a 'sub-template'
267      *
268      * 
269      * 
270      *
271      */
272     </span><span class="jsdoc-var">compileTpl </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tpl</span><span class="jsdoc-syntax">)
273     {
274         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">fm </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.util.Format</span><span class="jsdoc-syntax">;
275         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">useF </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.disableFormats </span><span class="jsdoc-syntax">!== </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
276
277         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">sep </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.isGecko </span><span class="jsdoc-syntax">? </span><span class="jsdoc-string">&quot;+\n&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;,\n&quot;</span><span class="jsdoc-syntax">;
278
279         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">undef </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">str</span><span class="jsdoc-syntax">) {
280             </span><span class="jsdoc-var">Roo.debug </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;Property not found :&quot;  </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">str</span><span class="jsdoc-syntax">);
281             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
282         };
283
284         </span><span class="jsdoc-comment">//Roo.log(tpl.body);
285
286
287
288         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">fn </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">m</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">lbrace</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">name</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">format</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">args</span><span class="jsdoc-syntax">)
289         {
290             </span><span class="jsdoc-comment">//Roo.log(&quot;ARGS&quot;);
291             //Roo.log(arguments);
292             </span><span class="jsdoc-var">args </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">args </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">args.replace</span><span class="jsdoc-syntax">(/\\'/g,</span><span class="jsdoc-string">&quot;'&quot;</span><span class="jsdoc-syntax">) : </span><span class="jsdoc-var">args</span><span class="jsdoc-syntax">;
293             </span><span class="jsdoc-comment">//[&quot;{TEST:(a,b,c)}&quot;, &quot;TEST&quot;, &quot;&quot;, &quot;a,b,c&quot;, 0, &quot;{TEST:(a,b,c)}&quot;]
294             </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">format</span><span class="jsdoc-syntax">) == </span><span class="jsdoc-string">'undefined'</span><span class="jsdoc-syntax">) {
295                 </span><span class="jsdoc-var">format </span><span class="jsdoc-syntax">=  </span><span class="jsdoc-string">'htmlEncode'</span><span class="jsdoc-syntax">;
296             }
297             </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">format </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">'raw' </span><span class="jsdoc-syntax">) {
298                 </span><span class="jsdoc-var">format </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
299             }
300
301             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">name.substr</span><span class="jsdoc-syntax">(0, 6) == </span><span class="jsdoc-string">'domtpl'</span><span class="jsdoc-syntax">){
302                 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">&quot;'&quot;</span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">sep </span><span class="jsdoc-syntax">+</span><span class="jsdoc-string">'this.applySubTemplate('</span><span class="jsdoc-syntax">+</span><span class="jsdoc-var">name.substr</span><span class="jsdoc-syntax">(6)+</span><span class="jsdoc-string">', values, parent)'</span><span class="jsdoc-syntax">+</span><span class="jsdoc-var">sep</span><span class="jsdoc-syntax">+</span><span class="jsdoc-string">&quot;'&quot;</span><span class="jsdoc-syntax">;
303             }
304
305             </span><span class="jsdoc-comment">// build an array of options to determine if value is undefined..
306
307             // basically get 'xxxx.yyyy' then do
308             // (typeof(xxxx) == 'undefined' || typeof(xxx.yyyy) == 'undefined') ?
309             //    (function () { Roo.log(&quot;Property not found&quot;); return ''; })() :
310             //    ......
311
312             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">udef_ar </span><span class="jsdoc-syntax">= [];
313             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">lookfor </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
314             </span><span class="jsdoc-var">Roo.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">name.split</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'.'</span><span class="jsdoc-syntax">), </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">st</span><span class="jsdoc-syntax">) {
315                 </span><span class="jsdoc-var">lookfor </span><span class="jsdoc-syntax">+= (</span><span class="jsdoc-var">lookfor.length </span><span class="jsdoc-syntax">? </span><span class="jsdoc-string">'.'</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">) + </span><span class="jsdoc-var">st</span><span class="jsdoc-syntax">;
316                 </span><span class="jsdoc-var">udef_ar.push</span><span class="jsdoc-syntax">(  </span><span class="jsdoc-string">&quot;(typeof(&quot; </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">lookfor </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">&quot;) == 'undefined')&quot;  </span><span class="jsdoc-syntax">);
317             });
318
319             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">udef_st </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">'((' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">udef_ar.join</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot; || &quot;</span><span class="jsdoc-syntax">) +</span><span class="jsdoc-string">&quot;) ? undef('&quot; </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">name </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">&quot;') : &quot;</span><span class="jsdoc-syntax">; </span><span class="jsdoc-comment">// .. needs )
320
321
322             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">format </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">useF</span><span class="jsdoc-syntax">){
323
324                 </span><span class="jsdoc-var">args </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">args </span><span class="jsdoc-syntax">? </span><span class="jsdoc-string">',' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">args </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;&quot;</span><span class="jsdoc-syntax">;
325
326                 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">format.substr</span><span class="jsdoc-syntax">(0, 5) != </span><span class="jsdoc-string">&quot;this.&quot;</span><span class="jsdoc-syntax">){
327                     </span><span class="jsdoc-var">format </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">&quot;fm.&quot; </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">format </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'('</span><span class="jsdoc-syntax">;
328                 }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
329                     </span><span class="jsdoc-var">format </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">'this.call(&quot;'</span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">format.substr</span><span class="jsdoc-syntax">(5) + </span><span class="jsdoc-string">'&quot;, '</span><span class="jsdoc-syntax">;
330                     </span><span class="jsdoc-var">args </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">&quot;, values&quot;</span><span class="jsdoc-syntax">;
331                 }
332
333                 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">&quot;'&quot;</span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">sep </span><span class="jsdoc-syntax">+   </span><span class="jsdoc-var">udef_st   </span><span class="jsdoc-syntax">+    </span><span class="jsdoc-var">format </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">name </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">args </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">&quot;))&quot;</span><span class="jsdoc-syntax">+</span><span class="jsdoc-var">sep</span><span class="jsdoc-syntax">+</span><span class="jsdoc-string">&quot;'&quot;</span><span class="jsdoc-syntax">;
334             }
335
336             </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">args </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">args.length</span><span class="jsdoc-syntax">) {
337                 </span><span class="jsdoc-comment">// called with xxyx.yuu:(test,test)
338                 // change to ()
339                 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">&quot;'&quot;</span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">sep </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">udef_st  </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">name </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'(' </span><span class="jsdoc-syntax">+  </span><span class="jsdoc-var">args </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">&quot;))&quot;</span><span class="jsdoc-syntax">+</span><span class="jsdoc-var">sep</span><span class="jsdoc-syntax">+</span><span class="jsdoc-string">&quot;'&quot;</span><span class="jsdoc-syntax">;
340             }
341             </span><span class="jsdoc-comment">// raw.. - :raw modifier..
342             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">&quot;'&quot;</span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">sep </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">udef_st  </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">name </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">&quot;)&quot;</span><span class="jsdoc-syntax">+</span><span class="jsdoc-var">sep</span><span class="jsdoc-syntax">+</span><span class="jsdoc-string">&quot;'&quot;</span><span class="jsdoc-syntax">;
343
344         };
345         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">body</span><span class="jsdoc-syntax">;
346         </span><span class="jsdoc-comment">// branched to use + in gecko and [].join() in others
347         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isGecko</span><span class="jsdoc-syntax">){
348             </span><span class="jsdoc-var">body </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">&quot;tpl.compiled = function(values, parent){  with(values) { return '&quot; </span><span class="jsdoc-syntax">+
349                    </span><span class="jsdoc-var">tpl.body.replace</span><span class="jsdoc-syntax">(/(\r\n|\n)/g, </span><span class="jsdoc-string">'\\n'</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.replace</span><span class="jsdoc-syntax">(/'/g, </span><span class="jsdoc-string">&quot;\\'&quot;</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.replace</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.re</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">fn</span><span class="jsdoc-syntax">) +
350                     </span><span class="jsdoc-string">&quot;';};};&quot;</span><span class="jsdoc-syntax">;
351         }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
352             </span><span class="jsdoc-var">body </span><span class="jsdoc-syntax">= [</span><span class="jsdoc-string">&quot;tpl.compiled = function(values, parent){  with (values) { return ['&quot;</span><span class="jsdoc-syntax">];
353             </span><span class="jsdoc-var">body.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tpl.body.replace</span><span class="jsdoc-syntax">(/(\r\n|\n)/g,
354                             </span><span class="jsdoc-string">'\\n'</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.replace</span><span class="jsdoc-syntax">(/'/g, </span><span class="jsdoc-string">&quot;\\'&quot;</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.replace</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.re</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">fn</span><span class="jsdoc-syntax">));
355             </span><span class="jsdoc-var">body.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;'].join('');};};&quot;</span><span class="jsdoc-syntax">);
356             </span><span class="jsdoc-var">body </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">body.join</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">);
357         }
358
359         </span><span class="jsdoc-var">Roo.debug </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">body.replace</span><span class="jsdoc-syntax">(/\\n/,</span><span class="jsdoc-string">'\n'</span><span class="jsdoc-syntax">));
360
361         </span><span class="jsdoc-comment">/** eval:var:tpl eval:var:fm eval:var:useF eval:var:undef  */
362         </span><span class="jsdoc-keyword">eval</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">body</span><span class="jsdoc-syntax">);
363
364         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">;
365     },
366
367     </span><span class="jsdoc-comment">/**
368      * same as applyTemplate, except it's done to one of the subTemplates
369      * when using named templates, you can do:
370      *
371      * var str = pl.applySubTemplate('your-name', values);
372      *
373      * 
374      * @param {Number} id of the template
375      * @param {Object} values to apply to template
376      * @param {Object} parent (normaly the instance of this object)
377      */
378     </span><span class="jsdoc-var">applySubTemplate </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">values</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">parent</span><span class="jsdoc-syntax">)
379     {
380
381
382         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">t </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.tpls</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">];
383
384
385         </span><span class="jsdoc-keyword">try </span><span class="jsdoc-syntax">{
386             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">t.ifCall </span><span class="jsdoc-syntax">&amp;&amp; !</span><span class="jsdoc-var">t.ifCall.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">values</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">parent</span><span class="jsdoc-syntax">)){
387                 </span><span class="jsdoc-var">Roo.debug </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'if call on ' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">t.value </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">' return false'</span><span class="jsdoc-syntax">);
388                 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
389             }
390         } </span><span class="jsdoc-keyword">catch</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">) {
391             </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'Xtemplate.applySubTemplate('</span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'): Exception thrown on roo-if=&quot;' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">t.value </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'&quot; - ' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">e.toString</span><span class="jsdoc-syntax">());
392             </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">values</span><span class="jsdoc-syntax">);
393
394             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
395         }
396         </span><span class="jsdoc-keyword">try </span><span class="jsdoc-syntax">{
397
398             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">t.execCall </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">t.execCall.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">values</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">parent</span><span class="jsdoc-syntax">)){
399                 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
400             }
401         } </span><span class="jsdoc-keyword">catch</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">) {
402             </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'Xtemplate.applySubTemplate('</span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'): Exception thrown on roo-for=&quot;' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">t.value </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'&quot; - ' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">e.toString</span><span class="jsdoc-syntax">());
403             </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">values</span><span class="jsdoc-syntax">);
404             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
405         }
406
407         </span><span class="jsdoc-keyword">try </span><span class="jsdoc-syntax">{
408             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">vs </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">t.forCall </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">t.forCall.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">values</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">parent</span><span class="jsdoc-syntax">) : </span><span class="jsdoc-var">values</span><span class="jsdoc-syntax">;
409             </span><span class="jsdoc-var">parent </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">t.target </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">values </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">parent</span><span class="jsdoc-syntax">;
410             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">t.forCall </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">vs </span><span class="jsdoc-keyword">instanceof </span><span class="jsdoc-var">Array</span><span class="jsdoc-syntax">){
411                 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">buf </span><span class="jsdoc-syntax">= [];
412                 </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0, </span><span class="jsdoc-var">len </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">vs.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">len</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++){
413                     </span><span class="jsdoc-keyword">try </span><span class="jsdoc-syntax">{
414                         </span><span class="jsdoc-var">buf</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">buf.length</span><span class="jsdoc-syntax">] = </span><span class="jsdoc-var">t.compiled.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">vs</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">], </span><span class="jsdoc-var">parent</span><span class="jsdoc-syntax">);
415                     } </span><span class="jsdoc-keyword">catch </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">) {
416                         </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'Xtemplate.applySubTemplate('</span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'): Exception thrown on body=&quot;' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">t.value </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'&quot; - ' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">e.toString</span><span class="jsdoc-syntax">());
417                         </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e.body</span><span class="jsdoc-syntax">);
418                         </span><span class="jsdoc-comment">//Roo.log(t.compiled);
419                         </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">vs</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]);
420                     }
421                 }
422                 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">buf.join</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">);
423             }
424         } </span><span class="jsdoc-keyword">catch </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">) {
425             </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'Xtemplate.applySubTemplate('</span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'): Exception thrown on roo-for=&quot;' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">t.value </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'&quot; - ' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">e.toString</span><span class="jsdoc-syntax">());
426             </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">values</span><span class="jsdoc-syntax">);
427             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
428         }
429         </span><span class="jsdoc-keyword">try </span><span class="jsdoc-syntax">{
430             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">t.compiled.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">vs</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">parent</span><span class="jsdoc-syntax">);
431         } </span><span class="jsdoc-keyword">catch </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">) {
432             </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'Xtemplate.applySubTemplate('</span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'): Exception thrown on body=&quot;' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">t.value </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'&quot; - ' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">e.toString</span><span class="jsdoc-syntax">());
433             </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e.body</span><span class="jsdoc-syntax">);
434             </span><span class="jsdoc-comment">//Roo.log(t.compiled);
435             </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">values</span><span class="jsdoc-syntax">);
436             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">;
437         }
438     },
439
440
441
442     </span><span class="jsdoc-var">applyTemplate </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">values</span><span class="jsdoc-syntax">){
443         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.master.compiled.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">values</span><span class="jsdoc-syntax">, {});
444         </span><span class="jsdoc-comment">//var s = this.subs;
445     </span><span class="jsdoc-syntax">},
446
447     </span><span class="jsdoc-var">apply </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
448         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.applyTemplate.apply</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">arguments</span><span class="jsdoc-syntax">);
449     }
450
451  });
452
453 </span><span class="jsdoc-var">Roo.DomTemplate.from </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">){
454     </span><span class="jsdoc-var">el </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.getDom</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">);
455     </span><span class="jsdoc-keyword">return new </span><span class="jsdoc-var">Roo.Domtemplate</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el.value </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">el.innerHTML</span><span class="jsdoc-syntax">);
456 };</span></code></body></html>