]> git.wh0rd.org - tt-rss.git/blob - lib/dojo/parser.js
add dijit/dojo stuff; initial ui mockup
[tt-rss.git] / lib / dojo / parser.js
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["dojo.parser"]){
9 dojo._hasResource["dojo.parser"]=true;
10 dojo.provide("dojo.parser");
11 dojo.require("dojo.date.stamp");
12 new Date("X");
13 dojo.parser=new function(){
14 var d=dojo;
15 this._attrName=d._scopeName+"Type";
16 this._query="["+this._attrName+"]";
17 function _1(_2){
18 if(d.isString(_2)){
19 return "string";
20 }
21 if(typeof _2=="number"){
22 return "number";
23 }
24 if(typeof _2=="boolean"){
25 return "boolean";
26 }
27 if(d.isFunction(_2)){
28 return "function";
29 }
30 if(d.isArray(_2)){
31 return "array";
32 }
33 if(_2 instanceof Date){
34 return "date";
35 }
36 if(_2 instanceof d._Url){
37 return "url";
38 }
39 return "object";
40 };
41 function _3(_4,_5){
42 switch(_5){
43 case "string":
44 return _4;
45 case "number":
46 return _4.length?Number(_4):NaN;
47 case "boolean":
48 return typeof _4=="boolean"?_4:!(_4.toLowerCase()=="false");
49 case "function":
50 if(d.isFunction(_4)){
51 _4=_4.toString();
52 _4=d.trim(_4.substring(_4.indexOf("{")+1,_4.length-1));
53 }
54 try{
55 if(_4===""||_4.search(/[^\w\.]+/i)!=-1){
56 return new Function(_4);
57 }else{
58 return d.getObject(_4,false)||new Function(_4);
59 }
60 }
61 catch(e){
62 return new Function();
63 }
64 case "array":
65 return _4?_4.split(/\s*,\s*/):[];
66 case "date":
67 switch(_4){
68 case "":
69 return new Date("");
70 case "now":
71 return new Date();
72 default:
73 return d.date.stamp.fromISOString(_4);
74 }
75 case "url":
76 return d.baseUrl+_4;
77 default:
78 return d.fromJson(_4);
79 }
80 };
81 var _6={};
82 dojo.connect(dojo,"extend",function(){
83 _6={};
84 });
85 function _7(_8){
86 if(!_6[_8]){
87 var _9=d.getObject(_8);
88 if(!_9){
89 return null;
90 }
91 var _a=_9.prototype;
92 var _b={},_c={};
93 for(var _d in _a){
94 if(_d.charAt(0)=="_"){
95 continue;
96 }
97 if(_d in _c){
98 continue;
99 }
100 var _e=_a[_d];
101 _b[_d]=_1(_e);
102 }
103 _6[_8]={cls:_9,params:_b};
104 }
105 return _6[_8];
106 };
107 this._functionFromScript=function(_f){
108 var _10="";
109 var _11="";
110 var _12=_f.getAttribute("args");
111 if(_12){
112 d.forEach(_12.split(/\s*,\s*/),function(_13,idx){
113 _10+="var "+_13+" = arguments["+idx+"]; ";
114 });
115 }
116 var _14=_f.getAttribute("with");
117 if(_14&&_14.length){
118 d.forEach(_14.split(/\s*,\s*/),function(_15){
119 _10+="with("+_15+"){";
120 _11+="}";
121 });
122 }
123 return new Function(_10+_f.innerHTML+_11);
124 };
125 this.instantiate=function(_16,_17,_18){
126 var _19=[],dp=dojo.parser;
127 _17=_17||{};
128 _18=_18||{};
129 d.forEach(_16,function(obj){
130 if(!obj){
131 return;
132 }
133 var _1a,_1b,_1c,_1d,_1e;
134 if(obj.node){
135 _1a=obj.node;
136 _1b=obj.type;
137 _1c=obj.clsInfo||(_1b&&_7(_1b));
138 _1d=_1c&&_1c.cls;
139 _1e=obj.scripts;
140 }else{
141 _1a=obj;
142 _1b=dp._attrName in _17?_17[dp._attrName]:_1a.getAttribute(dp._attrName);
143 _1c=_1b&&_7(_1b);
144 _1d=_1c&&_1c.cls;
145 _1e=(_1d&&(_1d._noScript||_1d.prototype._noScript)?[]:d.query("> script[type^='dojo/']",_1a));
146 }
147 if(!_1c){
148 throw new Error("Could not load class '"+_1b);
149 }
150 var _1f={},_20=_1a.attributes;
151 if(_18.defaults){
152 dojo.mixin(_1f,_18.defaults);
153 }
154 if(obj.inherited){
155 dojo.mixin(_1f,obj.inherited);
156 }
157 for(var _21 in _1c.params){
158 var _22=_21 in _17?{value:_17[_21],specified:true}:_20.getNamedItem(_21);
159 if(!_22||(!_22.specified&&(!dojo.isIE||_21.toLowerCase()!="value"))){
160 continue;
161 }
162 var _23=_22.value;
163 switch(_21){
164 case "class":
165 _23="className" in _17?_17.className:_1a.className;
166 break;
167 case "style":
168 _23="style" in _17?_17.style:(_1a.style&&_1a.style.cssText);
169 }
170 var _24=_1c.params[_21];
171 if(typeof _23=="string"){
172 _1f[_21]=_3(_23,_24);
173 }else{
174 _1f[_21]=_23;
175 }
176 }
177 var _25=[],_26=[];
178 d.forEach(_1e,function(_27){
179 _1a.removeChild(_27);
180 var _28=_27.getAttribute("event"),_1b=_27.getAttribute("type"),nf=d.parser._functionFromScript(_27);
181 if(_28){
182 if(_1b=="dojo/connect"){
183 _25.push({event:_28,func:nf});
184 }else{
185 _1f[_28]=nf;
186 }
187 }else{
188 _26.push(nf);
189 }
190 });
191 var _29=_1d.markupFactory||_1d.prototype&&_1d.prototype.markupFactory;
192 var _2a=_29?_29(_1f,_1a,_1d):new _1d(_1f,_1a);
193 _19.push(_2a);
194 var _2b=_1a.getAttribute("jsId");
195 if(_2b){
196 d.setObject(_2b,_2a);
197 }
198 d.forEach(_25,function(_2c){
199 d.connect(_2a,_2c.event,null,_2c.func);
200 });
201 d.forEach(_26,function(_2d){
202 _2d.call(_2a);
203 });
204 });
205 if(!_17._started){
206 d.forEach(_19,function(_2e){
207 if(!_18.noStart&&_2e&&_2e.startup&&!_2e._started&&(!_2e.getParent||!_2e.getParent())){
208 _2e.startup();
209 }
210 });
211 }
212 return _19;
213 };
214 this.parse=function(_2f,_30){
215 var _31;
216 if(!_30&&_2f&&_2f.rootNode){
217 _30=_2f;
218 _31=_30.rootNode;
219 }else{
220 _31=_2f;
221 }
222 var _32=this._attrName;
223 function _33(_34,_35){
224 var _36=dojo.clone(_34.inherited);
225 dojo.forEach(["dir","lang"],function(_37){
226 var val=_34.node.getAttribute(_37);
227 if(val){
228 _36[_37]=val;
229 }
230 });
231 var _38=_34.scripts;
232 var _39=!_34.clsInfo||!_34.clsInfo.cls.prototype.stopParser;
233 for(var _3a=_34.node.firstChild;_3a;_3a=_3a.nextSibling){
234 if(_3a.nodeType==1){
235 var _3b=_39&&_3a.getAttribute(_32);
236 if(_3b){
237 var _3c={"type":_3b,clsInfo:_7(_3b),node:_3a,scripts:[],inherited:_36};
238 _35.push(_3c);
239 _33(_3c,_35);
240 }else{
241 if(_38&&_3a.nodeName.toLowerCase()=="script"){
242 _3b=_3a.getAttribute("type");
243 if(_3b&&/^dojo\//i.test(_3b)){
244 _38.push(_3a);
245 }
246 }else{
247 if(_39){
248 _33({node:_3a,inherited:_36},_35);
249 }
250 }
251 }
252 }
253 }
254 };
255 var _3d=[];
256 _33({node:_31?dojo.byId(_31):dojo.body(),inherited:(_30&&_30.inherited)||{dir:dojo._isBodyLtr()?"ltr":"rtl"}},_3d);
257 return this.instantiate(_3d,null,_30);
258 };
259 }();
260 (function(){
261 var _3e=function(){
262 if(dojo.config.parseOnLoad){
263 dojo.parser.parse();
264 }
265 };
266 if(dojo.exists("dijit.wai.onload")&&(dijit.wai.onload===dojo._loaders[0])){
267 dojo._loaders.splice(1,0,_3e);
268 }else{
269 dojo._loaders.unshift(_3e);
270 }
271 })();
272 }