parser.js
6.9 KB
//>>built
define("require ./_base/kernel ./_base/lang ./_base/array ./_base/config ./dom ./_base/window ./_base/url ./aspect ./promise/all ./date/stamp ./Deferred ./has ./query ./on ./ready".split(" "),function(E,x,v,z,L,M,N,O,J,P,Q,F,B,K,R,S){function G(a){return eval("("+a+")")}function T(a){var b=a._nameCaseMap,e=a.prototype;if(!b||b._extendCnt<C){var b=a._nameCaseMap={},f;for(f in e)"_"!==f.charAt(0)&&(b[f.toLowerCase()]=f);b._extendCnt=C}return b}function H(a,b){b||(b=E);var e=b._dojoParserCtorMap||(b._dojoParserCtorMap=
{}),f=a.join();if(!e[f]){for(var c=[],l=0,w=a.length;l<w;l++){var m=a[l];c[c.length]=e[m]=e[m]||v.getObject(m)||~m.indexOf("/")&&b(m)}a=c.shift();e[f]=c.length?a.createSubclass?a.createSubclass(c):a.extend.apply(a,c):a}return e[f]}new Date("X");var C=0;J.after(v,"extend",function(){C++},!0);B={_clearCache:function(){C++;_ctorMap={}},_functionFromScript:function(a,b){var e="",f="",c=a.getAttribute(b+"args")||a.getAttribute("args");b=a.getAttribute("with");c=(c||"").split(/\s*,\s*/);b&&b.length&&z.forEach(b.split(/\s*,\s*/),
function(a){e+="with("+a+"){";f+="}"});return new Function(c,e+a.innerHTML+f)},instantiate:function(a,b,e){b=b||{};e=e||{};var f=(e.scope||x._scopeName)+"Type",c="data-"+(e.scope||x._scopeName)+"-",l=c+"type",w=c+"mixins",m=[];z.forEach(a,function(a){var e=f in b?b[f]:a.getAttribute(l)||a.getAttribute(f);if(e){var c=a.getAttribute(w),e=c?[e].concat(c.split(/\s*,\s*/)):[e];m.push({node:a,types:e})}});return this._instantiate(m,b,e)},_instantiate:function(a,b,e,f){function c(a){b._started||e.noStart||
z.forEach(a,function(a){"function"!==typeof a.startup||a._started||a.startup()});return a}a=z.map(a,function(a){var c=a.ctor||H(a.types,e.contextRequire);if(!c)throw Error("Unable to resolve constructor for: '"+a.types.join()+"'");return this.construct(c,a.node,b,e,a.scripts,a.inherited)},this);return f?P(a).then(c):c(a)},construct:function(a,b,e,f,c,l){function w(a){t&&v.setObject(t,a);for(k=0;k<y.length;k++)J[y[k].advice||"after"](a,y[k].method,v.hitch(a,y[k].func),!0);for(k=0;k<I.length;k++)I[k].call(a);
for(k=0;k<D.length;k++)a.watch(D[k].prop,D[k].func);for(k=0;k<A.length;k++)R(a,A[k].event,A[k].func);return a}var m=a&&a.prototype;f=f||{};var p={};f.defaults&&v.mixin(p,f.defaults);l&&v.mixin(p,l);var r;r=b.attributes;var h=f.scope||x._scopeName;l="data-"+h+"-";var g={};"dojo"!==h&&(g[l+"props"]="data-dojo-props",g[l+"type"]="data-dojo-type",g[l+"mixins"]="data-dojo-mixins",g[h+"type"]="dojotype",g[l+"id"]="data-dojo-id");for(var k=0,d,h=[],t,q;d=r[k++];){var n=d.name,u=n.toLowerCase();d=d.value;
switch(g[u]||u){case "data-dojo-type":case "dojotype":case "data-dojo-mixins":break;case "data-dojo-props":q=d;break;case "data-dojo-id":case "jsid":t=d;break;case "data-dojo-attach-point":case "dojoattachpoint":p.dojoAttachPoint=d;break;case "data-dojo-attach-event":case "dojoattachevent":p.dojoAttachEvent=d;break;case "class":p["class"]=b.className;break;case "style":p.style=b.style&&b.style.cssText;break;default:if(n in m||(n=T(a)[u]||n),n in m)switch(typeof m[n]){case "string":p[n]=d;break;case "number":p[n]=
d.length?Number(d):NaN;break;case "boolean":p[n]="false"!=d.toLowerCase();break;case "function":""===d||-1!=d.search(/[^\w\.]+/i)?p[n]=new Function(d):p[n]=v.getObject(d,!1)||new Function(d);h.push(n);break;default:u=m[n],p[n]=u&&"length"in u?d?d.split(/\s*,\s*/):[]:u instanceof Date?""==d?new Date(""):"now"==d?new Date:Q.fromISOString(d):u instanceof O?x.baseUrl+d:G(d)}else p[n]=d}}for(r=0;r<h.length;r++)g=h[r].toLowerCase(),b.removeAttribute(g),b[g]=null;if(q)try{q=G.call(f.propsThis,"{"+q+"}"),
v.mixin(p,q)}catch(U){throw Error(U.toString()+" in data-dojo-props\x3d'"+q+"'");}v.mixin(p,e);c||(c=a&&(a._noScript||m._noScript)?[]:K("\x3e script[type^\x3d'dojo/']",b));var y=[],I=[],D=[],A=[];if(c)for(k=0;k<c.length;k++)g=c[k],b.removeChild(g),e=g.getAttribute(l+"event")||g.getAttribute("event"),f=g.getAttribute(l+"prop"),q=g.getAttribute(l+"method"),h=g.getAttribute(l+"advice"),r=g.getAttribute("type"),g=this._functionFromScript(g,l),e?"dojo/connect"==r?y.push({method:e,func:g}):"dojo/on"==r?
A.push({event:e,func:g}):p[e]=g:"dojo/aspect"==r?y.push({method:q,advice:h,func:g}):"dojo/watch"==r?D.push({prop:f,func:g}):I.push(g);a=(c=a.markupFactory||m.markupFactory)?c(p,b,a):new a(p,b);return a.then?a.then(w):w(a)},scan:function(a,b){function e(a){if(!a.inherited){a.inherited={};var b=a.node,c=e(a.parent),b={dir:b.getAttribute("dir")||c.dir,lang:b.getAttribute("lang")||c.lang,textDir:b.getAttribute(r)||c.textDir},d;for(d in b)b[d]&&(a.inherited[d]=b[d])}return a.inherited}var f=[],c=[],l=
{},w=(b.scope||x._scopeName)+"Type",m="data-"+(b.scope||x._scopeName)+"-",p=m+"type",r=m+"textdir",m=m+"mixins",h=a.firstChild,g=b.inherited;if(!g){var k=function(a,b){return a.getAttribute&&a.getAttribute(b)||a.parentNode&&k(a.parentNode,b)},g={dir:k(a,"dir"),lang:k(a,"lang"),textDir:k(a,r)},d;for(d in g)g[d]||delete g[d]}d={inherited:g};for(var t,q;;)if(h)if(1!=h.nodeType)h=h.nextSibling;else if(t&&"script"==h.nodeName.toLowerCase())(g=h.getAttribute("type"))&&/^dojo\/\w/i.test(g)&&t.push(h),h=
h.nextSibling;else if(q)h=h.nextSibling;else if(g=h.getAttribute(p)||h.getAttribute(w),a=h.firstChild,g||a&&(3!=a.nodeType||a.nextSibling)){q=null;if(g){var n=h.getAttribute(m);t=n?[g].concat(n.split(/\s*,\s*/)):[g];try{q=H(t,b.contextRequire)}catch(y){}q||z.forEach(t,function(a){~a.indexOf("/")&&!l[a]&&(l[a]=!0,c[c.length]=a)});n=q&&!q.prototype._noScript?[]:null;d={types:t,ctor:q,parent:d,node:h,scripts:n};d.inherited=e(d);f.push(d)}else d={node:h,scripts:t,parent:d};t=n;q=h.stopParser||q&&q.prototype.stopParser&&
!b.template;h=a}else h=h.nextSibling;else{if(!d||!d.node)break;h=d.node.nextSibling;q=!1;d=d.parent;t=d.scripts}var u=new F;c.length?(b.contextRequire||E)(c,function(){u.resolve(z.filter(f,function(a){if(!a.ctor)try{a.ctor=H(a.types,b.contextRequire)}catch(A){}for(var c=a.parent;c&&!c.types;)c=c.parent;var d=a.ctor&&a.ctor.prototype;a.instantiateChildren=!(d&&d.stopParser&&!b.template);a.instantiate=!c||c.instantiate&&c.instantiateChildren;return a.instantiate}))}):u.resolve(f);return u.promise},
_require:function(a,b){a=G("{"+a.innerHTML+"}");var e=[],f=[],c=new F;b=b&&b.contextRequire||E;for(var l in a)e.push(l),f.push(a[l]);b(f,function(){for(var a=0;a<e.length;a++)v.setObject(e[a],arguments[a]);c.resolve(arguments)});return c.promise},_scanAmd:function(a,b){var e=new F,f=e.promise;e.resolve(!0);var c=this;K("script[type\x3d'dojo/require']",a).forEach(function(a){f=f.then(function(){return c._require(a,b)});a.parentNode.removeChild(a)});return f},parse:function(a,b){!a||"string"==typeof a||
"nodeType"in a||(b=a,a=b.rootNode);var e=a?M.byId(a):N.body();b=b||{};var f=b.template?{template:!0}:{},c=[],l=this;a=this._scanAmd(e,b).then(function(){return l.scan(e,b)}).then(function(a){return l._instantiate(a,f,b,!0)}).then(function(a){return c=c.concat(a)}).otherwise(function(a){console.error("dojo/parser::parse() error",a);throw a;});v.mixin(c,a);return c}};x.parser=B;L.parseOnLoad&&S(100,B,"parse");return B});