5 augments : function(data)
7 if (!data.augments.length) {
10 var linkSymbol = this.linkSymbol;
11 var output = '<div class="inheritance res-block"> <pre class="res-block-inner">';
13 var iblock_indent = 0;
14 data.augments.reverse().map(
16 output += iblock_indent ? ('<img src="../images/default/s.gif" height="1" width="' +
17 iblock_indent + '"/><img src="../images/default/tree/elbow-end.gif" class="elbow"/>') : '';
18 output += linkSymbol($) + "\n";
23 return output + '<img src="../images/default/s.gif" height="1" width="' + iblock_indent +'"/>' +
24 '<img class="elbow" src="../images/default/tree/elbow-end.gif"/>'+data.name+
30 config : function(dtag)
33 var output = '<a name="'+dtag.memberOf+'-cfg-'+dtag.name+'"></a>';
34 output += '<div class="fixedFont"><b class="itemname"> ' + dtag.name + '</b> : ' +
35 (dtag.type.length ? this.linkSymbol(dtag.type) : "" ) + '</div>';
37 output += '<div class="mdesc"><div class="short">'+this.resolveLinks(this.summarize(dtag.desc))+'</div></div>';
39 output += '<div class="mdesc"><div class="long">' + this.resolveLinks(dtag.desc)+ ' ' +
40 (dtag.values.length ? ("<BR/>Possible Values: " +
41 dtag.values.map(function(v) {
42 return v.length ? v : "<B>Empty</B>";
48 methodsSort : function(data)
54 if (data.name.length &&
59 data.isInherited = false;
60 data.isConstructor = true;
61 ownMethods.push(data); // should push ctor???
64 var msorted = data.methods.sort(this.makeSortby("name"));
71 //if (/@hide/.test($.desc)) { == not needed - done in the backend
75 //if (!$.isEvent && (data.comment.getTag("instanceOf").length || data.comment.getTag("singleton").length)) {
77 // not sure if we should just ignore signletons???
78 //if (!data.isSingleton) {
84 if (data.isSingleton) {
86 if ($.isStatic && $.memberOf != data.name) { // it's a singleton - can not inherit static methods.
90 $.isInherited = ($.memberOf != data.name);
96 if (($.memberOf != data.name) && $.isStatic){
100 $.isInherited = ($.memberOf != data.name);
112 //if (/@hide/.test($.desc)) {
115 // it's a signleton class - can not have dynamic methods..
116 if (data.isSingleton) {
119 if (($.memberOf != data.name) && $.isStatic){
123 $.isInherited = ($.memberOf != data.alias);
136 method : function(member) {
138 var output = '<a name="' + member.memberOf +'.' + member.name + '"></a>' +
139 '<div class="fixedFont"> <span class="attributes">';
141 if (member.isConstructor) {
145 if (member.isPrivate) output += "<private> ";
146 if (member.isInner) output += "<inner> ";
147 if (member.isStatic || member.isSingleton) { //|| data.comment.getTag("instanceOf").length) {
148 output += member.memberOf + ".";
151 output += '</span><b class="itemname">' + member.name + '</b>';
153 output += this.makeSignature(member.params);
154 if (member.returns.length) {
156 for(var i = 0;i< member.returns.length;i++) {
157 var item = member.returns[i];
158 output += (i > 0 ? ' or ' : '') +
159 this.linkSymbol(item.type);
164 output += '</div> <div class="mdesc">';
165 if (!member.isConstructor) {
166 output+= '<div class="short">'+this.resolveLinks(this.summarize(member.desc)) +'</div>';
169 output+= '<div class="short">Create a new '+member.memberOf +'</div>';
171 output +='<div class="long">';
172 if (!member.isConstructor) {
173 output+= this.resolveLinks(member.desc) ;
174 if (member.example.length) {
175 output +'<pre class="code">'+member.example+'</pre>';
179 output+= 'Create a new '+member.memberOf;
180 // example and desc.. are normally on the 'top'...
182 if (member.params.length) {
185 output+= '<dl class="detailList"> <dt class="heading">Parameters:</dt>';
186 for(var i = 0; i < member.params.length ; i++) {
187 var item = member.params[i];
190 '<span class="fixedFont">' + this.linkSymbol(item.type) + '</span> ' :
192 )+ '<b>'+item.name+'</b>';
193 if (item.isOptional) {
194 output+='<i>Optional ';
195 if (item.defaultValue.length) {
196 output+='Default: '+item.defaultValue;
200 output +='</dt><dd>'+this.resolveLinks(item.desc)+'</dd>';
204 if (member.deprecated.length) {
205 output+= '<dl class="detailList"><dt class="heading">Deprecated:</dt><dt>' +
206 +member.deprecated+'</dt></dl>';
210 if (member.since.length) {
211 output+= '<dl class="detailList"><dt class="heading">Since:</dt><dt>' +
212 +member.since+'</dt></dl>';
215 <if test="member.exceptions.length">
216 <dl class="detailList">
217 <dt class="heading">Throws:</dt>
218 <for each="item" in="member.exceptions">
220 {+((item.type)?"<span class=\"fixedFont\">{"+(new Link().toSymbol(item.type))+"}</span> " : "")+} <b>{+item.name+}</b>
222 <dd>{+resolveLinks(item.desc)+}</dd>
227 if (member.returns.length) {
228 output += '<dl class="detailList"><dt class="heading">Returns:</dt>';
229 for (var i =0; i < member.returns.length; i++) {
230 var item = member.returns[i];
231 output+= '<dd>' + this.linkSymbol( item.type ) + ' ' + this.resolveLinks(item.desc) + '</dd></dl>';
237 <if test="member.requires.length">
238 <dl class="detailList">
239 <dt class="heading">Requires:</dt>
240 <for each="item" in="member.requires">
241 <dd>{+ resolveLinks(item) +}</dd>
246 if (member.see.length) {
247 output+= '<dl class="detailList"><dt class="heading">See:</dt><dt>' +
248 '<dd>' + this.linkSymbol( member.see ) +'</dd></dl>';
250 output +='</div></div>';
256 event : function(member)
260 var output = '<a name="' + member.memberOf +'-event-' + member.name + '"></a>' +
261 '<div class="fixedFont"> ';
264 output += '<b class="itemname">'+member.name+'</b>' +this.makeSignature(member.params) + '</div>';
266 output += '<div class="mdesc">';
267 output += '<div class="short">' +this.resolveLinks(this.summarize(member.desc))+ '</div>';
270 output += '<div class="long">' + this.resolveLinks(member.desc);
272 if (member.example.length) {
273 output +'<pre class="code">'+member.example+'</pre>';
275 if (member.params.length) {
278 output+= '<dl class="detailList"> <dt class="heading">Parameters:</dt>';
279 for(var i = 0; i < member.params.length ; i++) {
280 var item = member.params[i];
283 '<span class="fixedFont">' + this.linkSymbol(item.type) + '</span> ' :
285 )+ '<b>'+item.name+'</b>';
286 if (item.isOptional) {
287 output+='<i>Optional ';
288 if (item.defaultValue.length) {
289 output+='Default: '+item.defaultValue;
293 output +='</dt><dd>'+this.resolveLinks(item.desc)+'</dd>';
297 if (member.deprecated.length) {
298 output+= '<dl class="detailList"><dt class="heading">Deprecated:</dt><dt>' +
299 +member.deprecated+'</dt></dl>';
303 if (member.since.length) {
304 output+= '<dl class="detailList"><dt class="heading">Since:</dt><dt>' +
305 +member.since+'</dt></dl>';
308 <if test="member.exceptions.length">
309 <dl class="detailList">
310 <dt class="heading">Throws:</dt>
311 <for each="item" in="member.exceptions">
313 {+((item.type)?"<span class=\"fixedFont\">{"+(new Link().toSymbol(item.type))+"}</span> " : "")+} <b>{+item.name+}</b>
315 <dd>{+resolveLinks(item.desc)+}</dd>
320 if (member.returns.length) {
321 output += '<dl class="detailList"><dt class="heading">Returns:</dt>';
322 for (var i =0; i < member.returns.length; i++) {
323 var item = member.returns[i];
324 output+= '<dd>' + this.linkSymbol( item.type ) + ' ' + this.resolveLinks(item.desc) + '</dd></dl>';
330 <if test="member.requires.length">
331 <dl class="detailList">
332 <dt class="heading">Requires:</dt>
333 <for each="item" in="member.requires">
334 <dd>{+ resolveLinks(item) +}</dd>
339 if (member.see.length) {
340 output+= '<dl class="detailList"><dt class="heading">See:</dt><dt>' +
341 '<dd>' + this.linkSymbol( member.see ) +'</dd></dl>';
343 output +='</div></div>';
357 makeSignature : function(params)
360 if (!params.length) return "()";
361 var linkSymbol = this.linkSymbol;
362 var signature = "(" +
365 return $.name.indexOf(".") == -1; // don't show config params in signature
369 $.defaultValue = typeof($.defaultValue) == 'undefined' ? false : $.defaultValue;
372 ($.isOptional ? "[" : "") +
375 (typeof($.type) == 'object' ) ? 'Function' : $.type
378 "<B><i>" +$.name + "</i></B>" +
379 ($.defaultValue ? "=" +item.defaultValue : "") +
380 ($.isOptional ? "]" : "");
390 resolveLinks : function(str)
392 if (!str || typeof(str) == 'undefined') {
396 // gtk specific. now..
397 // @ -> bold.. - they are arguments..
399 str = str.replace(/@([a-z_]+)/gi,
400 function(match, symbolName) {
401 return '<b>' + symbolName + '</b>';
405 str = str.replace(/%([a-z_]+)/gi,
406 function(match, symbolName) {
407 return '<b>' + symbolName + '</b>';
411 str = str.replace(/#([a-z_]+)/gi,
412 function(match, symbolName) {
413 return '<b>' + symbolName + '</b>';
414 // this should do a lookup!!!!
415 /// it could use data in the signature to find out..
416 //return new Link().toSymbol(Template.data.ns + '.' + symbolName);
421 str = str.replace(/\s+\n/gi, '\n');
422 str = str.replace(/\n\n+/gi, '<p/>');
423 //str = str.replace(/\n/gi, '<br/>');
424 var linkSymbol = this.linkSymbol;
425 str = str.replace(/\{@link ([^} ]+) ?\}/gi,
426 function(match, symbolName) {
427 return linkSymbol(symbolName);
433 summarize : function(desc)
435 if (typeof desc != "undefined") {
436 // finds the first fulls stop...
437 return desc.match(/([\w\W]+?\.)[^a-z0-9]/i)? RegExp.$1.replace("\n", " ") : desc.split("\n")[0];
441 linkSymbol : function(str)
443 return '<span class=\"fixedFont\"><a href="#' + str + '">' + str + '</a></span>';
445 makeSortby : function(attribute) {
446 return function(a, b) {
447 if (a[attribute] != undefined && b[attribute] != undefined) {
448 a = a[attribute]; //.toLowerCase();
449 b = b[attribute];//.toLowerCase();
450 if (a < b) return -1;