Project

General

Profile

Download (4.31 KB) Statistics
| Branch: | Revision:
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
}
(22-22/26)