1
|
/*
|
2
|
Copyright (c) 2004-2008, 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["dojo.parser"]){
|
9
|
dojo._hasResource["dojo.parser"]=true;
|
10
|
dojo.provide("dojo.parser");
|
11
|
dojo.require("dojo.date.stamp");
|
12
|
dojo.parser=new function(){
|
13
|
var d=dojo;
|
14
|
var _2=d._scopeName+"Type";
|
15
|
var _3="["+_2+"]";
|
16
|
function val2type(_4){
|
17
|
if(d.isString(_4)){
|
18
|
return "string";
|
19
|
}
|
20
|
if(typeof _4=="number"){
|
21
|
return "number";
|
22
|
}
|
23
|
if(typeof _4=="boolean"){
|
24
|
return "boolean";
|
25
|
}
|
26
|
if(d.isFunction(_4)){
|
27
|
return "function";
|
28
|
}
|
29
|
if(d.isArray(_4)){
|
30
|
return "array";
|
31
|
}
|
32
|
if(_4 instanceof Date){
|
33
|
return "date";
|
34
|
}
|
35
|
if(_4 instanceof d._Url){
|
36
|
return "url";
|
37
|
}
|
38
|
return "object";
|
39
|
};
|
40
|
function str2obj(_5,_6){
|
41
|
switch(_6){
|
42
|
case "string":
|
43
|
return _5;
|
44
|
case "number":
|
45
|
return _5.length?Number(_5):NaN;
|
46
|
case "boolean":
|
47
|
return typeof _5=="boolean"?_5:!(_5.toLowerCase()=="false");
|
48
|
case "function":
|
49
|
if(d.isFunction(_5)){
|
50
|
_5=_5.toString();
|
51
|
_5=d.trim(_5.substring(_5.indexOf("{")+1,_5.length-1));
|
52
|
}
|
53
|
try{
|
54
|
if(_5.search(/[^\w\.]+/i)!=-1){
|
55
|
_5=d.parser._nameAnonFunc(new Function(_5),this);
|
56
|
}
|
57
|
return d.getObject(_5,false);
|
58
|
}
|
59
|
catch(e){
|
60
|
return new Function();
|
61
|
}
|
62
|
case "array":
|
63
|
return _5?_5.split(/\s*,\s*/):[];
|
64
|
case "date":
|
65
|
switch(_5){
|
66
|
case "":
|
67
|
return new Date("");
|
68
|
case "now":
|
69
|
return new Date();
|
70
|
default:
|
71
|
return d.date.stamp.fromISOString(_5);
|
72
|
}
|
73
|
case "url":
|
74
|
return d.baseUrl+_5;
|
75
|
default:
|
76
|
return d.fromJson(_5);
|
77
|
}
|
78
|
};
|
79
|
var _7={};
|
80
|
function getClassInfo(_8){
|
81
|
if(!_7[_8]){
|
82
|
var _9=d.getObject(_8);
|
83
|
if(!d.isFunction(_9)){
|
84
|
throw new Error("Could not load class '"+_8+"'. Did you spell the name correctly and use a full path, like 'dijit.form.Button'?");
|
85
|
}
|
86
|
var _a=_9.prototype;
|
87
|
var _b={};
|
88
|
for(var _c in _a){
|
89
|
if(_c.charAt(0)=="_"){
|
90
|
continue;
|
91
|
}
|
92
|
var _d=_a[_c];
|
93
|
_b[_c]=val2type(_d);
|
94
|
}
|
95
|
_7[_8]={cls:_9,params:_b};
|
96
|
}
|
97
|
return _7[_8];
|
98
|
};
|
99
|
this._functionFromScript=function(_e){
|
100
|
var _f="";
|
101
|
var _10="";
|
102
|
var _11=_e.getAttribute("args");
|
103
|
if(_11){
|
104
|
d.forEach(_11.split(/\s*,\s*/),function(_12,idx){
|
105
|
_f+="var "+_12+" = arguments["+idx+"]; ";
|
106
|
});
|
107
|
}
|
108
|
var _14=_e.getAttribute("with");
|
109
|
if(_14&&_14.length){
|
110
|
d.forEach(_14.split(/\s*,\s*/),function(_15){
|
111
|
_f+="with("+_15+"){";
|
112
|
_10+="}";
|
113
|
});
|
114
|
}
|
115
|
return new Function(_f+_e.innerHTML+_10);
|
116
|
};
|
117
|
this.instantiate=function(_16){
|
118
|
var _17=[];
|
119
|
d.forEach(_16,function(_18){
|
120
|
if(!_18){
|
121
|
return;
|
122
|
}
|
123
|
var _19=_18.getAttribute(_2);
|
124
|
if((!_19)||(!_19.length)){
|
125
|
return;
|
126
|
}
|
127
|
var _1a=getClassInfo(_19);
|
128
|
var _1b=_1a.cls;
|
129
|
var ps=_1b._noScript||_1b.prototype._noScript;
|
130
|
var _1d={};
|
131
|
var _1e=_18.attributes;
|
132
|
for(var _1f in _1a.params){
|
133
|
var _20=_1e.getNamedItem(_1f);
|
134
|
if(!_20||(!_20.specified&&(!dojo.isIE||_1f.toLowerCase()!="value"))){
|
135
|
continue;
|
136
|
}
|
137
|
var _21=_20.value;
|
138
|
switch(_1f){
|
139
|
case "class":
|
140
|
_21=_18.className;
|
141
|
break;
|
142
|
case "style":
|
143
|
_21=_18.style&&_18.style.cssText;
|
144
|
}
|
145
|
var _22=_1a.params[_1f];
|
146
|
_1d[_1f]=str2obj(_21,_22);
|
147
|
}
|
148
|
if(!ps){
|
149
|
var _23=[],_24=[];
|
150
|
d.query("> script[type^='dojo/']",_18).orphan().forEach(function(_25){
|
151
|
var _26=_25.getAttribute("event"),_19=_25.getAttribute("type"),nf=d.parser._functionFromScript(_25);
|
152
|
if(_26){
|
153
|
if(_19=="dojo/connect"){
|
154
|
_23.push({event:_26,func:nf});
|
155
|
}else{
|
156
|
_1d[_26]=nf;
|
157
|
}
|
158
|
}else{
|
159
|
_24.push(nf);
|
160
|
}
|
161
|
});
|
162
|
}
|
163
|
var _28=_1b["markupFactory"];
|
164
|
if(!_28&&_1b["prototype"]){
|
165
|
_28=_1b.prototype["markupFactory"];
|
166
|
}
|
167
|
var _29=_28?_28(_1d,_18,_1b):new _1b(_1d,_18);
|
168
|
_17.push(_29);
|
169
|
var _2a=_18.getAttribute("jsId");
|
170
|
if(_2a){
|
171
|
d.setObject(_2a,_29);
|
172
|
}
|
173
|
if(!ps){
|
174
|
d.forEach(_23,function(_2b){
|
175
|
d.connect(_29,_2b.event,null,_2b.func);
|
176
|
});
|
177
|
d.forEach(_24,function(_2c){
|
178
|
_2c.call(_29);
|
179
|
});
|
180
|
}
|
181
|
});
|
182
|
d.forEach(_17,function(_2d){
|
183
|
if(_2d&&_2d.startup&&!_2d._started&&(!_2d.getParent||!_2d.getParent())){
|
184
|
_2d.startup();
|
185
|
}
|
186
|
});
|
187
|
return _17;
|
188
|
};
|
189
|
this.parse=function(_2e){
|
190
|
var _2f=d.query(_3,_2e);
|
191
|
var _30=this.instantiate(_2f);
|
192
|
return _30;
|
193
|
};
|
194
|
}();
|
195
|
(function(){
|
196
|
var _31=function(){
|
197
|
if(dojo.config["parseOnLoad"]==true){
|
198
|
dojo.parser.parse();
|
199
|
}
|
200
|
};
|
201
|
if(dojo.exists("dijit.wai.onload")&&(dijit.wai.onload===dojo._loaders[0])){
|
202
|
dojo._loaders.splice(1,0,_31);
|
203
|
}else{
|
204
|
dojo._loaders.unshift(_31);
|
205
|
}
|
206
|
})();
|
207
|
dojo.parser._anonCtr=0;
|
208
|
dojo.parser._anon={};
|
209
|
dojo.parser._nameAnonFunc=function(_32,_33){
|
210
|
var jpn="$joinpoint";
|
211
|
var nso=(_33||dojo.parser._anon);
|
212
|
if(dojo.isIE){
|
213
|
var cn=_32["__dojoNameCache"];
|
214
|
if(cn&&nso[cn]===_32){
|
215
|
return _32["__dojoNameCache"];
|
216
|
}
|
217
|
}
|
218
|
var ret="__"+dojo.parser._anonCtr++;
|
219
|
while(typeof nso[ret]!="undefined"){
|
220
|
ret="__"+dojo.parser._anonCtr++;
|
221
|
}
|
222
|
nso[ret]=_32;
|
223
|
return ret;
|
224
|
};
|
225
|
}
|