root / trunk / web / dojo / dojox / help / _base.js @ 12
History | View | Annotate | Download (8.22 KB)
1 |
/*
|
---|---|
2 |
Copyright (c) 2004-2010, The Dojo Foundation All Rights Reserved.
|
3 |
Available via Academic Free License >= 2.1 OR the modified BSD license.
|
4 |
see: http://dojotoolkit.org/license for details
|
5 |
*/
|
6 |
|
7 |
|
8 |
if(!dojo._hasResource["dojox.help._base"]){ |
9 |
dojo._hasResource["dojox.help._base"]=true; |
10 |
dojo.provide("dojox.help._base");
|
11 |
dojo.require("dojox.rpc.Service");
|
12 |
dojo.require("dojo.io.script");
|
13 |
dojo.experimental("dojox.help");
|
14 |
console.warn("Script causes side effects (on numbers, strings, and booleans). Call dojox.help.noConflict() if you plan on executing code.");
|
15 |
dojox.help={locate:function(_1,_2,_3){ |
16 |
_3=_3||20;
|
17 |
var _4=[];
|
18 |
var _5={};
|
19 |
var _6;
|
20 |
if(_2){
|
21 |
if(!dojo.isArray(_2)){
|
22 |
_2=[_2]; |
23 |
} |
24 |
for(var i=0,_7;_7=_2[i];i++){ |
25 |
_6=_7; |
26 |
if(dojo.isString(_7)){
|
27 |
_7=dojo.getObject(_7); |
28 |
if(!_7){
|
29 |
continue;
|
30 |
} |
31 |
}else{
|
32 |
if(dojo.isObject(_7)){
|
33 |
_6=_7.__name__; |
34 |
}else{
|
35 |
continue;
|
36 |
} |
37 |
} |
38 |
_4.push(_7); |
39 |
if(_6){
|
40 |
_6=_6.split(".")[0]; |
41 |
if(!_5[_6]&&dojo.indexOf(dojox.help._namespaces,_6)==-1){ |
42 |
dojox.help.refresh(_6); |
43 |
} |
44 |
_5[_6]=true;
|
45 |
} |
46 |
} |
47 |
} |
48 |
if(!_4.length){
|
49 |
_4.push({__name__:"window"}); |
50 |
dojo.forEach(dojox.help._namespaces,function(_8){
|
51 |
_5[_8]=true;
|
52 |
}); |
53 |
} |
54 |
var _9=_1.toLowerCase();
|
55 |
var _a=[];
|
56 |
out: |
57 |
for(var i=0,_7;_7=_4[i];i++){ |
58 |
var _b=_7.__name__||""; |
59 |
var _c=dojo.some(_4,function(_d){ |
60 |
_d=_d.__name__||"";
|
61 |
return (_b.indexOf(_d+".")==0); |
62 |
}); |
63 |
if(_b&&!_c){
|
64 |
_6=_b.split(".")[0]; |
65 |
var _e=[];
|
66 |
if(_b=="window"){ |
67 |
for(_6 in dojox.help._names){ |
68 |
if(dojo.isArray(dojox.help._names[_6])){
|
69 |
_e=_e.concat(dojox.help._names[_6]); |
70 |
} |
71 |
} |
72 |
}else{
|
73 |
_e=dojox.help._names[_6]; |
74 |
} |
75 |
for(var j=0,_f;_f=_e[j];j++){ |
76 |
if((_b=="window"||_f.indexOf(_b+".")==0)&&_f.toLowerCase().indexOf(_9)!=-1){ |
77 |
if(_f.slice(-10)==".prototype"){ |
78 |
continue;
|
79 |
} |
80 |
var obj=dojo.getObject(_f);
|
81 |
if(obj){
|
82 |
_a.push([_f,obj]); |
83 |
if(_a.length==_3){
|
84 |
break out;
|
85 |
} |
86 |
} |
87 |
} |
88 |
} |
89 |
} |
90 |
} |
91 |
dojox.help._displayLocated(_a); |
92 |
if(!dojo.isMoz){
|
93 |
return ""; |
94 |
} |
95 |
},refresh:function(_10,_11){ |
96 |
if(arguments.length<2){ |
97 |
_11=true;
|
98 |
} |
99 |
dojox.help._recurse(_10,_11); |
100 |
},noConflict:function(_12){ |
101 |
if(arguments.length){ |
102 |
return dojox.help._noConflict(_12);
|
103 |
}else{
|
104 |
while(dojox.help._overrides.length){
|
105 |
var _13=dojox.help._overrides.pop();
|
106 |
var _14=_13[0]; |
107 |
var key=_13[1]; |
108 |
var _15=_14[key];
|
109 |
_14[key]=dojox.help._noConflict(_15); |
110 |
} |
111 |
} |
112 |
},init:function(_16,_17){ |
113 |
if(_16){
|
114 |
dojox.help._namespaces.concat(_16); |
115 |
} |
116 |
dojo.addOnLoad(function(){
|
117 |
dojo.require=(function(_18){
|
118 |
return function(){ |
119 |
dojox.help.noConflict(); |
120 |
_18.apply(dojo,arguments);
|
121 |
if(dojox.help._timer){
|
122 |
clearTimeout(dojox.help._timer); |
123 |
} |
124 |
dojox.help._timer=setTimeout(function(){
|
125 |
dojo.addOnLoad(function(){
|
126 |
dojox.help.refresh(); |
127 |
dojox.help._timer=false;
|
128 |
}); |
129 |
},500);
|
130 |
}; |
131 |
})(dojo.require); |
132 |
dojox.help._recurse(); |
133 |
}); |
134 |
},_noConflict:function(_19){ |
135 |
if(_19 instanceof String){ |
136 |
return _19.toString();
|
137 |
}else{
|
138 |
if(_19 instanceof Number){ |
139 |
return +_19;
|
140 |
}else{
|
141 |
if(_19 instanceof Boolean){ |
142 |
return (_19==true); |
143 |
}else{
|
144 |
if(dojo.isObject(_19)){
|
145 |
delete _19.__name__;
|
146 |
delete _19.help;
|
147 |
} |
148 |
} |
149 |
} |
150 |
} |
151 |
return _19;
|
152 |
},_namespaces:["dojo","dojox","dijit","djConfig"],_rpc:new dojox.rpc.Service(dojo.moduleUrl("dojox.rpc.SMDLibrary","dojo-api.smd")),_attributes:["summary","type","returns","parameters"],_clean:function(_1a){ |
153 |
var obj={};
|
154 |
for(var i=0,_1b;_1b=dojox.help._attributes[i];i++){ |
155 |
var _1c=_1a["__"+_1b+"__"]; |
156 |
if(_1c){
|
157 |
obj[_1b]=_1c; |
158 |
} |
159 |
} |
160 |
return obj;
|
161 |
},_displayLocated:function(_1d){ |
162 |
throw new Error("_displayLocated should be overridden in one of the dojox.help packages"); |
163 |
},_displayHelp:function(_1e,obj){ |
164 |
throw new Error("_displayHelp should be overridden in one of the dojox.help packages"); |
165 |
},_addVersion:function(obj){ |
166 |
if(obj.name){
|
167 |
obj.version=[dojo.version.major,dojo.version.minor,dojo.version.patch].join(".");
|
168 |
var _1f=obj.name.split("."); |
169 |
if(_1f[0]=="dojo"||_1f[0]=="dijit"||_1f[0]=="dojox"){ |
170 |
obj.project=_1f[0];
|
171 |
} |
172 |
} |
173 |
return obj;
|
174 |
},_stripPrototype:function(_20){ |
175 |
var _21=_20.replace(/\.prototype(\.|$)/g,"."); |
176 |
var _22=_21;
|
177 |
if(_21.slice(-1)=="."){ |
178 |
_22=_21=_21.slice(0,-1); |
179 |
}else{
|
180 |
_21=_20; |
181 |
} |
182 |
return [_22,_21];
|
183 |
},_help:function(){ |
184 |
var _23=this.__name__; |
185 |
var _24=dojox.help._stripPrototype(_23)[0]; |
186 |
var _25=[];
|
187 |
for(var i=0,_26;_26=dojox.help._attributes[i];i++){ |
188 |
if(!this["__"+_26+"__"]){ |
189 |
_25.push(_26); |
190 |
} |
191 |
} |
192 |
dojox.help._displayHelp(true,{name:this.__name__}); |
193 |
if(!_25.length||this.__searched__){ |
194 |
dojox.help._displayHelp(false,dojox.help._clean(this)); |
195 |
}else{
|
196 |
this.__searched__=true; |
197 |
dojox.help._rpc.get(dojox.help._addVersion({name:_24,exact:true,attributes:_25})).addCallback(this,function(_27){ |
198 |
if(this.toString===dojox.help._toString){ |
199 |
this.toString(_27);
|
200 |
} |
201 |
if(_27&&_27.length){
|
202 |
_27=_27[0];
|
203 |
for(var i=0,_26;_26=dojox.help._attributes[i];i++){ |
204 |
if(_27[_26]){
|
205 |
this["__"+_26+"__"]=_27[_26]; |
206 |
} |
207 |
} |
208 |
dojox.help._displayHelp(false,dojox.help._clean(this)); |
209 |
}else{
|
210 |
dojox.help._displayHelp(false,false); |
211 |
} |
212 |
}); |
213 |
} |
214 |
if(!dojo.isMoz){
|
215 |
return ""; |
216 |
} |
217 |
},_parse:function(_28){ |
218 |
delete this.__searching__; |
219 |
if(_28&&_28.length){
|
220 |
var _29=_28[0].parameters; |
221 |
if(_29){
|
222 |
var _2a=["function ",this.__name__,"("]; |
223 |
this.__parameters__=_29;
|
224 |
for(var i=0,_2b;_2b=_29[i];i++){ |
225 |
if(i){
|
226 |
_2a.push(", ");
|
227 |
} |
228 |
_2a.push(_2b.name); |
229 |
if(_2b.types){
|
230 |
var _2c=[];
|
231 |
for(var j=0,_2d;_2d=_2b.types[j];j++){ |
232 |
_2c.push(_2d.title); |
233 |
} |
234 |
if(_2c.length){
|
235 |
_2a.push(": ");
|
236 |
_2a.push(_2c.join("|"));
|
237 |
} |
238 |
} |
239 |
if(_2b.repeating){
|
240 |
_2a.push("...");
|
241 |
} |
242 |
if(_2b.optional){
|
243 |
_2a.push("?");
|
244 |
} |
245 |
} |
246 |
_2a.push(")");
|
247 |
this.__source__=this.__source__.replace(/function[^\(]*\([^\)]*\)/,_2a.join("")); |
248 |
} |
249 |
if(this.__output__){ |
250 |
delete this.__output__; |
251 |
} |
252 |
}else{
|
253 |
dojox.help._displayHelp(false,false); |
254 |
} |
255 |
},_toStrings:{},_toString:function(_2e){ |
256 |
if(!this.__source__){ |
257 |
return this.__name__; |
258 |
} |
259 |
var _2f=(!this.__parameters__); |
260 |
this.__parameters__=[];
|
261 |
if(_2e){
|
262 |
dojox.help._parse.call(this,_2e);
|
263 |
}else{
|
264 |
if(_2f){
|
265 |
this.__searching__=true; |
266 |
dojox.help._toStrings[dojox.help._stripPrototype(this.__name__)[0]]=this; |
267 |
if(dojox.help._toStringTimer){
|
268 |
clearTimeout(dojox.help._toStringTimer); |
269 |
} |
270 |
dojox.help._toStringTimer=setTimeout(function(){
|
271 |
dojox.help.__toString(); |
272 |
},50);
|
273 |
} |
274 |
} |
275 |
if(!_2f||!this.__searching__){ |
276 |
return this.__source__; |
277 |
} |
278 |
var _30="function Loading info for "+this.__name__+"... (watch console for result) {}"; |
279 |
if(!dojo.isMoz){
|
280 |
this.__output__=true; |
281 |
return _30;
|
282 |
} |
283 |
return {toString:dojo.hitch(this,function(){ |
284 |
this.__output__=true; |
285 |
return _30;
|
286 |
})}; |
287 |
},__toString:function(){ |
288 |
if(dojox.help._toStringTimer){
|
289 |
clearTimeout(dojox.help._toStringTimer); |
290 |
} |
291 |
var _31=[];
|
292 |
dojox.help.noConflict(dojox.help._toStrings); |
293 |
for(var _32 in dojox.help._toStrings){ |
294 |
_31.push(_32); |
295 |
} |
296 |
while(_31.length){
|
297 |
dojox.help._rpc.batch(dojox.help._addVersion({names:_31.splice(-50,50),exact:true,attributes:["parameters"]})).addCallback(this,function(_33){ |
298 |
for(var i=0,_34;_34=_33[i];i++){ |
299 |
var fn=dojox.help._toStrings[_34.name];
|
300 |
if(fn){
|
301 |
dojox.help._parse.call(fn,[_34]); |
302 |
delete dojox.help._toStrings[_34.name];
|
303 |
} |
304 |
} |
305 |
}); |
306 |
} |
307 |
},_overrides:[],_recursions:[],_names:{},_recurse:function(_35,_36){ |
308 |
if(arguments.length<2){ |
309 |
_36=true;
|
310 |
} |
311 |
var _37=[];
|
312 |
if(_35&&dojo.isString(_35)){
|
313 |
dojox.help.__recurse(dojo.getObject(_35),_35,_35,_37,_36); |
314 |
}else{
|
315 |
for(var i=0,ns;ns=dojox.help._namespaces[i];i++){ |
316 |
if(window[ns]){
|
317 |
dojox.help._recursions.push([window[ns],ns,ns]); |
318 |
window[ns].__name__=ns; |
319 |
if(!window[ns].help){
|
320 |
window[ns].help=dojox.help._help; |
321 |
} |
322 |
} |
323 |
} |
324 |
} |
325 |
while(dojox.help._recursions.length){
|
326 |
var _38=dojox.help._recursions.shift();
|
327 |
dojox.help.__recurse(_38[0],_38[1],_38[2],_37,_36); |
328 |
} |
329 |
for(var i=0,_39;_39=_37[i];i++){ |
330 |
delete _39.__seen__;
|
331 |
} |
332 |
},__recurse:function(_3a,_3b,_3c,_3d,_3e){ |
333 |
for(var key in _3a){ |
334 |
if(key.match(/([^\w_.$]|__[\w_.$]+__)/)){ |
335 |
continue;
|
336 |
} |
337 |
var _3f=_3a[key];
|
338 |
if(typeof _3f=="undefined"||_3f===document||_3f===window||_3f===dojox.help._toString||_3f===dojox.help._help||_3f===null||(+dojo.isIE&&_3f.tagName)||_3f.__seen__){ |
339 |
continue;
|
340 |
} |
341 |
var _40=dojo.isFunction(_3f);
|
342 |
var _41=dojo.isObject(_3f)&&!dojo.isArray(_3f)&&!_3f.nodeType;
|
343 |
var _42=(_3c)?(_3c+"."+key):key; |
344 |
if(_42=="dojo._blockAsync"){ |
345 |
continue;
|
346 |
} |
347 |
if(!_3f.__name__){
|
348 |
var _43=null; |
349 |
if(dojo.isString(_3f)){
|
350 |
_43=String; |
351 |
}else{
|
352 |
if(typeof _3f=="number"){ |
353 |
_43=Number; |
354 |
}else{
|
355 |
if(typeof _3f=="boolean"){ |
356 |
_43=Boolean; |
357 |
} |
358 |
} |
359 |
} |
360 |
if(_43){
|
361 |
_3f=_3a[key]=new _43(_3f);
|
362 |
} |
363 |
} |
364 |
_3f.__seen__=true;
|
365 |
_3f.__name__=_42; |
366 |
(dojox.help._names[_3b]=dojox.help._names[_3b]||[]).push(_42); |
367 |
_3d.push(_3f); |
368 |
if(!_40){
|
369 |
dojox.help._overrides.push([_3a,key]); |
370 |
} |
371 |
if((_40||_41)&&_3e){
|
372 |
dojox.help._recursions.push([_3f,_3b,_42]); |
373 |
} |
374 |
if(_40){
|
375 |
if(!_3f.__source__){
|
376 |
_3f.__source__=_3f.toString().replace(/^function\b ?/,"function "+_42); |
377 |
} |
378 |
if(_3f.toString===Function.prototype.toString){
|
379 |
_3f.toString=dojox.help._toString; |
380 |
} |
381 |
} |
382 |
if(!_3f.help){
|
383 |
_3f.help=dojox.help._help; |
384 |
} |
385 |
} |
386 |
}}; |
387 |
} |