diff options
author | Andrew Dolgov <[email protected]> | 2010-11-15 10:39:52 +0300 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2010-11-15 10:39:52 +0300 |
commit | 2f01fe57a8d37767827d6db42850aef86a767c53 (patch) | |
tree | 516a95ffce2fc2435aed8d9976e444dbcba7dce3 /lib/dojo/parser.js | |
parent | 951906dcecb1d3c7bcf751976a03e0c196ca6db0 (diff) |
add dijit/dojo stuff; initial ui mockup
Diffstat (limited to 'lib/dojo/parser.js')
-rw-r--r-- | lib/dojo/parser.js | 272 |
1 files changed, 272 insertions, 0 deletions
diff --git a/lib/dojo/parser.js b/lib/dojo/parser.js new file mode 100644 index 000000000..245528328 --- /dev/null +++ b/lib/dojo/parser.js @@ -0,0 +1,272 @@ +/* + Copyright (c) 2004-2010, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + + +if(!dojo._hasResource["dojo.parser"]){ +dojo._hasResource["dojo.parser"]=true; +dojo.provide("dojo.parser"); +dojo.require("dojo.date.stamp"); +new Date("X"); +dojo.parser=new function(){ +var d=dojo; +this._attrName=d._scopeName+"Type"; +this._query="["+this._attrName+"]"; +function _1(_2){ +if(d.isString(_2)){ +return "string"; +} +if(typeof _2=="number"){ +return "number"; +} +if(typeof _2=="boolean"){ +return "boolean"; +} +if(d.isFunction(_2)){ +return "function"; +} +if(d.isArray(_2)){ +return "array"; +} +if(_2 instanceof Date){ +return "date"; +} +if(_2 instanceof d._Url){ +return "url"; +} +return "object"; +}; +function _3(_4,_5){ +switch(_5){ +case "string": +return _4; +case "number": +return _4.length?Number(_4):NaN; +case "boolean": +return typeof _4=="boolean"?_4:!(_4.toLowerCase()=="false"); +case "function": +if(d.isFunction(_4)){ +_4=_4.toString(); +_4=d.trim(_4.substring(_4.indexOf("{")+1,_4.length-1)); +} +try{ +if(_4===""||_4.search(/[^\w\.]+/i)!=-1){ +return new Function(_4); +}else{ +return d.getObject(_4,false)||new Function(_4); +} +} +catch(e){ +return new Function(); +} +case "array": +return _4?_4.split(/\s*,\s*/):[]; +case "date": +switch(_4){ +case "": +return new Date(""); +case "now": +return new Date(); +default: +return d.date.stamp.fromISOString(_4); +} +case "url": +return d.baseUrl+_4; +default: +return d.fromJson(_4); +} +}; +var _6={}; +dojo.connect(dojo,"extend",function(){ +_6={}; +}); +function _7(_8){ +if(!_6[_8]){ +var _9=d.getObject(_8); +if(!_9){ +return null; +} +var _a=_9.prototype; +var _b={},_c={}; +for(var _d in _a){ +if(_d.charAt(0)=="_"){ +continue; +} +if(_d in _c){ +continue; +} +var _e=_a[_d]; +_b[_d]=_1(_e); +} +_6[_8]={cls:_9,params:_b}; +} +return _6[_8]; +}; +this._functionFromScript=function(_f){ +var _10=""; +var _11=""; +var _12=_f.getAttribute("args"); +if(_12){ +d.forEach(_12.split(/\s*,\s*/),function(_13,idx){ +_10+="var "+_13+" = arguments["+idx+"]; "; +}); +} +var _14=_f.getAttribute("with"); +if(_14&&_14.length){ +d.forEach(_14.split(/\s*,\s*/),function(_15){ +_10+="with("+_15+"){"; +_11+="}"; +}); +} +return new Function(_10+_f.innerHTML+_11); +}; +this.instantiate=function(_16,_17,_18){ +var _19=[],dp=dojo.parser; +_17=_17||{}; +_18=_18||{}; +d.forEach(_16,function(obj){ +if(!obj){ +return; +} +var _1a,_1b,_1c,_1d,_1e; +if(obj.node){ +_1a=obj.node; +_1b=obj.type; +_1c=obj.clsInfo||(_1b&&_7(_1b)); +_1d=_1c&&_1c.cls; +_1e=obj.scripts; +}else{ +_1a=obj; +_1b=dp._attrName in _17?_17[dp._attrName]:_1a.getAttribute(dp._attrName); +_1c=_1b&&_7(_1b); +_1d=_1c&&_1c.cls; +_1e=(_1d&&(_1d._noScript||_1d.prototype._noScript)?[]:d.query("> script[type^='dojo/']",_1a)); +} +if(!_1c){ +throw new Error("Could not load class '"+_1b); +} +var _1f={},_20=_1a.attributes; +if(_18.defaults){ +dojo.mixin(_1f,_18.defaults); +} +if(obj.inherited){ +dojo.mixin(_1f,obj.inherited); +} +for(var _21 in _1c.params){ +var _22=_21 in _17?{value:_17[_21],specified:true}:_20.getNamedItem(_21); +if(!_22||(!_22.specified&&(!dojo.isIE||_21.toLowerCase()!="value"))){ +continue; +} +var _23=_22.value; +switch(_21){ +case "class": +_23="className" in _17?_17.className:_1a.className; +break; +case "style": +_23="style" in _17?_17.style:(_1a.style&&_1a.style.cssText); +} +var _24=_1c.params[_21]; +if(typeof _23=="string"){ +_1f[_21]=_3(_23,_24); +}else{ +_1f[_21]=_23; +} +} +var _25=[],_26=[]; +d.forEach(_1e,function(_27){ +_1a.removeChild(_27); +var _28=_27.getAttribute("event"),_1b=_27.getAttribute("type"),nf=d.parser._functionFromScript(_27); +if(_28){ +if(_1b=="dojo/connect"){ +_25.push({event:_28,func:nf}); +}else{ +_1f[_28]=nf; +} +}else{ +_26.push(nf); +} +}); +var _29=_1d.markupFactory||_1d.prototype&&_1d.prototype.markupFactory; +var _2a=_29?_29(_1f,_1a,_1d):new _1d(_1f,_1a); +_19.push(_2a); +var _2b=_1a.getAttribute("jsId"); +if(_2b){ +d.setObject(_2b,_2a); +} +d.forEach(_25,function(_2c){ +d.connect(_2a,_2c.event,null,_2c.func); +}); +d.forEach(_26,function(_2d){ +_2d.call(_2a); +}); +}); +if(!_17._started){ +d.forEach(_19,function(_2e){ +if(!_18.noStart&&_2e&&_2e.startup&&!_2e._started&&(!_2e.getParent||!_2e.getParent())){ +_2e.startup(); +} +}); +} +return _19; +}; +this.parse=function(_2f,_30){ +var _31; +if(!_30&&_2f&&_2f.rootNode){ +_30=_2f; +_31=_30.rootNode; +}else{ +_31=_2f; +} +var _32=this._attrName; +function _33(_34,_35){ +var _36=dojo.clone(_34.inherited); +dojo.forEach(["dir","lang"],function(_37){ +var val=_34.node.getAttribute(_37); +if(val){ +_36[_37]=val; +} +}); +var _38=_34.scripts; +var _39=!_34.clsInfo||!_34.clsInfo.cls.prototype.stopParser; +for(var _3a=_34.node.firstChild;_3a;_3a=_3a.nextSibling){ +if(_3a.nodeType==1){ +var _3b=_39&&_3a.getAttribute(_32); +if(_3b){ +var _3c={"type":_3b,clsInfo:_7(_3b),node:_3a,scripts:[],inherited:_36}; +_35.push(_3c); +_33(_3c,_35); +}else{ +if(_38&&_3a.nodeName.toLowerCase()=="script"){ +_3b=_3a.getAttribute("type"); +if(_3b&&/^dojo\//i.test(_3b)){ +_38.push(_3a); +} +}else{ +if(_39){ +_33({node:_3a,inherited:_36},_35); +} +} +} +} +} +}; +var _3d=[]; +_33({node:_31?dojo.byId(_31):dojo.body(),inherited:(_30&&_30.inherited)||{dir:dojo._isBodyLtr()?"ltr":"rtl"}},_3d); +return this.instantiate(_3d,null,_30); +}; +}(); +(function(){ +var _3e=function(){ +if(dojo.config.parseOnLoad){ +dojo.parser.parse(); +} +}; +if(dojo.exists("dijit.wai.onload")&&(dijit.wai.onload===dojo._loaders[0])){ +dojo._loaders.splice(1,0,_3e); +}else{ +dojo._loaders.unshift(_3e); +} +})(); +} |