flutter changes
[roojs1] / docs / Roo.docs.template.js
1
2
3 Roo.docs.template  = {
4
5     summary : function (data)
6     {
7         
8         output = this.resolveLinks(data.desc) ;
9         if (data.example.length) {
10             output += '<pre class="code">'+data.example+'</pre>';
11         }
12         return output;
13     },
14
15     
16     
17     augments : function(data)
18     {
19         if (!data.augments.length) {
20             return '';
21         }
22         var linkSymbol  = this.linkSymbol;
23         var output = '<div class="inheritance res-block"> <pre class="res-block-inner">';
24         
25         var iblock_indent = 0;
26          data.augments.reverse().map(
27             function($) {  
28                 output += iblock_indent ? ('<img src="../images/default/s.gif" height="1" width="' + 
29                     iblock_indent + '"/><img src="../images/default/tree/elbow-end.gif" class="elbow"/>') : '';
30                 output += linkSymbol($) + "\n"; 
31                 iblock_indent += 20;
32             }
33         )
34          
35         return output +  '<img src="../images/default/s.gif" height="1"  width="' +  iblock_indent +'"/>' +
36             '<img class="elbow" src="../images/default/tree/elbow-end.gif"/>'+data.name+
37     
38                '</pre></div>'
39        
40     },
41     
42     implementors : function(data)
43     {
44         if (!data.realImplementors.length) {
45             return '';
46         }
47         var linkSymbol  = this.linkSymbol;
48         var output = '<ul class="inheritance res-block"> ';
49         
50         data.realImplementors.sort();
51         
52         
53         var iblock_indent = 0;
54         data.realImplementors.map(
55             function($) {  
56         
57                 output += '<li>' + linkSymbol($) + '</li>';
58                 
59             }
60         )
61          
62         return output +   '</ul>'
63         
64     },
65     
66     config : function(dtag)
67     {
68        
69         var output = '<a name="'+dtag.memberOf+'-cfg-'+dtag.name+'"></a>';
70         output += '<div class="fixedFont"><b  class="itemname"> ' + dtag.name + '</b> : ' +
71             (dtag.type.length ? this.linkSymbol(dtag.type) : "" ) + '</div>';
72               
73         output += '<div class="mdesc"><div class="short">'+this.resolveLinks(this.summarize(dtag.desc))+'</div></div>';
74                 
75         output += '<div class="mdesc"><div class="long">' + this.resolveLinks(dtag.desc)+ ' ' + 
76                         (dtag.values && dtag.values.length ? ("<BR/>Possible Values: " +
77                     dtag.values.map(function(v) {
78                         return v.length ? v : "<B>Empty</B>";
79                     }).join(", ")) : ''
80                 ) + '</div></div>';
81         Roo.log(JSON.stringify(output));
82         return output;
83     },
84     
85     methodsSort : function(data)
86     {
87     
88       
89         var ownMethods = [];
90     
91         if (data.name.length && 
92             !data.isBuiltin && 
93             !data.isSingleton &&
94             !data.isStatic &&
95             !data.isFlutter
96             ) {
97             data.isInherited = false;
98             data.isConstructor = true;
99             ownMethods.push(data);   // should push ctor???
100         }
101         
102         var msorted = data.methods.sort(this.makeSortby("name"));
103         
104         // static first?
105         
106         msorted.filter(
107             function($){
108          
109             
110             
111             
112             if (data.isSingleton) {
113              
114                 if ($.isStatic && $.memberOf != data.name) { // it's a singleton - can not inherit static methods.
115                 return true;
116                 }
117             
118                 $.isInherited = ($.memberOf != data.name);
119                 ownMethods.push($);
120                 return true;
121             }
122             
123                 
124             if (($.memberOf != data.name) && $.isStatic){
125                 return true;
126             }
127             if ($.isStatic) {
128                 $.isInherited = ($.memberOf != data.name);
129                 ownMethods.push($);
130             }
131                 
132             return true;
133             }
134         );
135     
136         // then dynamics..
137     
138         msorted.filter(
139             function($){
140                 //if (/@hide/.test($.desc)) {
141                 //        return false;
142                 //}
143                 // it's a signleton class - can not have dynamic methods..
144                 if (data.isSingleton) {
145                     return true;
146                 }
147                 if (($.memberOf != data.name) && $.isStatic){
148                     return true;
149                 }
150                 if (!$.isStatic) {
151                 $.isInherited = ($.memberOf != data.alias);
152                 ownMethods.push($);
153                 }
154                 
155                 return true;
156             }
157         );
158         
159         return ownMethods;
160         
161     },
162
163     
164     method : function(member) {
165       
166         var output = '<a name="' + member.memberOf +'.' + member.name + '"></a>' +
167              '<div class="fixedFont"> <span class="attributes">';
168
169         if (member.isConstructor) {
170                 output += "new ";
171         } else {
172                 
173         if (member.isPrivate) output += "&lt;private&gt; ";
174         if (member.isInner) output += "&lt;inner&gt; ";
175         if (member.isStatic || member.isSingleton) { //|| data.comment.getTag("instanceOf").length) {
176             output +=  member.memberOf + ".";    
177         }
178         }
179         output += '</span><b class="itemname">' + member.name + '</b>';
180                 
181         output += this.makeSignature(member.params);
182         if (member.returns && member.returns.length) {
183             output += ': ';
184             for(var i = 0;i< member.returns.length;i++) {
185                 var item = member.returns[i];
186                 output += (i > 0 ? ' or ' : '') +
187                 this.linkSymbol(item.type);
188             }
189         }
190             
191             
192     output += '</div> <div class="mdesc">';
193         if (!member.isConstructor) {
194             output+= '<div class="short">'+this.resolveLinks(this.summarize(member.desc)) +'</div>';
195         } else  {
196             //ctor
197         output+= '<div class="short">Create a new '+member.memberOf +'</div>';
198     }
199     output +='<div class="long">';
200         if (!member.isConstructor) {
201             output+= this.resolveLinks(member.desc) ;
202             if (member.example.length) {
203                 output += '<pre class="code">'+member.example+'</pre>';
204             }
205         } else {
206             //ctor
207             output+= 'Create a new '+member.memberOf;
208         // example and desc.. are normally on the 'top'...
209         }
210         if (member.params.length) {
211         
212      
213             output+= '<dl class="detailList"> <dt class="heading">Parameters:</dt>';
214             for(var  i = 0; i <  member.params.length ; i++) {
215                 var item = member.params[i];
216                     output += '<dt>' +
217                        ( item.type.length ?
218                             '<span class="fixedFont">' + this.linkSymbol(item.type) + '</span> ' :
219                             ""
220                         )+  '<b>'+item.name+'</b>';
221                     if (item.isOptional) {
222                         output+='<i>Optional ';
223                         if (item.defaultValue.length) {
224                             output+='Default: '+item.defaultValue;
225                         }
226                         output+='</i>';
227                     }
228                     output +='</dt><dd>'+this.resolveLinks(item.desc)+'</dd>';
229             }
230             output+= '</dl>';
231         }    
232         if (member.isDeprecated || (member.deprecated && member.deprecated.length)) {
233             output+= '<dl class="detailList"><dt class="heading">Deprecated:</dt><dt>' +
234                         +member.deprecated+'</dt></dl>';
235         }
236         
237         
238         if (member.since && member.since.length) {
239             output+= '<dl class="detailList"><dt class="heading">Since:</dt><dt>' +
240                         +member.since+'</dt></dl>';
241         }
242          /*
243                 <if test="member.exceptions.length">
244                         <dl class="detailList">
245                         <dt class="heading">Throws:</dt>
246                         <for each="item" in="member.exceptions">
247                                 <dt>
248                                         {+((item.type)?"<span class=\"fixedFont\">{"+(new Link().toSymbol(item.type))+"}</span> " : "")+} <b>{+item.name+}</b>
249                                 </dt>
250                                 <dd>{+resolveLinks(item.desc)+}</dd>
251                         </for>
252                         </dl>
253                 </if>
254                 */
255         if (member.returns && member.returns.length) {
256             output += '<dl class="detailList"><dt class="heading">Returns:</dt>';
257         for (var i =0; i < member.returns.length; i++) {
258         var item = member.returns[i];
259         output+= '<dd>' + this.linkSymbol( item.type ) + ' ' + this.resolveLinks(item.desc) + '</dd></dl>';
260         }
261                     
262         }
263         
264         /*
265                 <if test="member.requires.length">
266                         <dl class="detailList">
267                         <dt class="heading">Requires:</dt>
268                         <for each="item" in="member.requires">
269                                 <dd>{+ resolveLinks(item) +}</dd>
270                         </for>
271                         </dl>
272                 </if>
273         */
274         if (member.see  && member.see.length) {
275             output+= '<dl class="detailList"><dt class="heading">See:</dt><dt>' +
276                         '<dd>' + this.linkSymbol( member.see ) +'</dd></dl>';
277         }
278         output +='</div></div>';
279         return output;
280     },
281     
282     
283     
284     event  : function(member)
285     {
286      
287   
288         var output = '<a name="' + member.memberOf +'-event-' + member.name + '"></a>' +
289         '<div class="fixedFont"> ';
290
291         
292         output += '<b class="itemname">'+member.name+'</b>' +this.makeSignature(member.params) + '</div>';
293               
294         output += '<div class="mdesc">';
295     output += '<div class="short">' +this.resolveLinks(this.summarize(member.desc))+   '</div>';
296            
297             
298         output += '<div class="long">' + this.resolveLinks(member.desc);
299     
300     if (member.example.length) {
301         output +='<pre class="code">'+member.example+'</pre>';
302     }
303     if (member.params.length) {
304         
305      
306             output+= '<dl class="detailList"> <dt class="heading">Parameters:</dt>';
307             for(var  i = 0; i <  member.params.length ; i++) {
308                 var item = member.params[i];
309                     output += '<dt>' +
310                        ( item.type.length ?
311                             '<span class="fixedFont">' + this.linkSymbol(item.type) + '</span> ' :
312                             ""
313                         )+  '<b>'+item.name+'</b>';
314                     if (item.isOptional) {
315                         output+='<i>Optional ';
316                         if (item.defaultValue.length) {
317                             output+='Default: '+item.defaultValue;
318                         }
319                         output+='</i>';
320                     }
321                     output +='</dt><dd>'+this.resolveLinks(item.desc)+'</dd>';
322             }
323             output+= '</dl>';
324         }            
325       if ((member.deprecated && member.deprecated.length) || member.isDeprecated) {
326             output+= '<dl class="detailList"><dt class="heading">Deprecated:</dt><dt>' +
327                         +member.deprecated+'</dt></dl>';
328         }
329         
330         
331         if (member.since && member.since.length) {
332             output+= '<dl class="detailList"><dt class="heading">Since:</dt><dt>' +
333                         +member.since+'</dt></dl>';
334         }
335          /*
336                 <if test="member.exceptions.length">
337                         <dl class="detailList">
338                         <dt class="heading">Throws:</dt>
339                         <for each="item" in="member.exceptions">
340                                 <dt>
341                                         {+((item.type)?"<span class=\"fixedFont\">{"+(new Link().toSymbol(item.type))+"}</span> " : "")+} <b>{+item.name+}</b>
342                                 </dt>
343                                 <dd>{+resolveLinks(item.desc)+}</dd>
344                         </for>
345                         </dl>
346                 </if>
347                 */    
348       if (member.returns && member.returns.length) {
349             output += '<dl class="detailList"><dt class="heading">Returns:</dt>';
350         for (var i =0; i < member.returns.length; i++) {
351         var item = member.returns[i];
352         output+= '<dd>' + this.linkSymbol( item.type ) + ' ' + this.resolveLinks(item.desc) + '</dd></dl>';
353         }
354                     
355         }
356         
357         /*
358                 <if test="member.requires.length">
359                         <dl class="detailList">
360                         <dt class="heading">Requires:</dt>
361                         <for each="item" in="member.requires">
362                                 <dd>{+ resolveLinks(item) +}</dd>
363                         </for>
364                         </dl>
365                 </if>
366         */
367         if (member.see && member.see.length) {
368             output+= '<dl class="detailList"><dt class="heading">See:</dt><dt>' +
369                         '<dd>' + this.linkSymbol( member.see ) +'</dd></dl>';
370         }
371         output +='</div></div>';         
372           
373     return output;
374     },
375     
376     
377     
378     
379     
380     
381     
382     
383     
384     
385     makeSignature : function(params)
386     {
387         
388             if (!params.length) return "()";
389         var linkSymbol = this.linkSymbol;
390         var signature = " ("    +
391             params.filter(
392                 function($) {
393                     return $.name.indexOf(".") == -1; // don't show config params in signature
394                 }
395             ).map(
396                 function($) {
397                     $.defaultValue = typeof($.defaultValue) == 'undefined' ? false : $.defaultValue;
398                     
399                     return "" +
400                         ($.isOptional ? "[" : "") +
401                         (($.type) ? 
402                             linkSymbol(
403                                 (typeof($.type) == 'object' ) ? 'Function' : $.type
404                             ) + " " :  ""
405                         )   + 
406                         "<B><i>" +$.name + "</i></B>" +
407                         ($.defaultValue ? "=" +item.defaultValue : "") +
408                         ($.isOptional ? "]" : "");
409                     
410                      
411                 }
412             ).join(", ")
413         +
414         ")";
415         return signature;
416         
417     },
418     resolveLinks : function(str)
419     {
420         if (!str || typeof(str) == 'undefined') {
421             return '';
422         }
423         
424         // gtk specific. now..
425         // @ -> bold.. - they are arguments..
426         /*
427         str = str.replace(/@([a-z_]+)/gi,
428             function(match, symbolName) {
429                 return '<b>' + symbolName + '</b>';
430             }
431         );
432         // constants.
433         str = str.replace(/%([a-z_]+)/gi,
434             function(match, symbolName) {
435                 return '<b>' + symbolName + '</b>';
436             }
437         );
438         
439         str = str.replace(/#([a-z_]+)/gi,
440             function(match, symbolName) {
441                 return '<b>' + symbolName + '</b>';
442                 // this should do a lookup!!!!
443                 /// it could use data in the signature to find out..
444                 //return new Link().toSymbol(Template.data.ns + '.' + symbolName);
445             }
446         );
447         */
448         //Roo.log(JSON.stringify(str));
449         str = str.replace(/[ \t]+\n/gi, '\n');
450         str = str.replace(/\n\n+/gi, '<br/><br/>');
451         //str = str.replace(/\n/gi, '<br/>');
452         var linkSymbol = this.linkSymbol;
453         str = str.replace(/\{@link ([^} ]+) ?\}/gi,
454             function(match, symbolName) {
455                 return linkSymbol(symbolName);
456             }
457         );
458          
459         return str;
460     },
461     summarize : function(desc)
462     {
463         if (typeof desc != "undefined") {
464             // finds the first fulls stop... (and we remove '<' html...)
465             return desc.match(/([\w\W]+?[\.|:])[^a-z0-9]/i)?
466                 RegExp.$1.split('<')[0].replace("\n", " ") : desc.split("\n")[0];
467         }
468         return '';
469     },
470     linkSymbol : function(str)
471     {
472         Roo.log(str);
473         var ar = str.split('<');
474         var out = '';
475         for(var i = ar.length-1; i > -1; i--) {
476             var bit = ar[i].split('>').shift();
477             if (out.length) {
478                 out = '&lt;' + out + '&gt;';
479             }
480             out = '<span class=\"fixedFont\"><a href="#' + bit+ '">' + bit + '</a>' + out + '</span>';
481         }
482         
483         return out;
484     },
485     makeSortby : function(attribute) {
486         return function(a, b) {
487             if (a[attribute] != undefined && b[attribute] != undefined) {
488                 a = a[attribute]; //.toLowerCase();
489                 b = b[attribute];//.toLowerCase();
490                 if (a < b) return -1;
491                 if (a > b) return 1;
492                 return 0;
493             }
494             return 0;
495         }
496     }
497 }