define( "dojo/parser", ["./_base/kernel", "./_base/lang", "./_base/array", "./_base/html", "./_base/window", "./_base/url", "./_base/json", "./aspect", "./date/stamp", "./query", "./on", "./ready"], function(dojo, dlang, darray, dhtml, dwindow, _Url, djson, aspect, dates, query, don){ // module: // dojo/parser // summary: // The Dom/Widget parsing package new Date("X"); // workaround for #11279, new Date("") == NaN var features = { // Feature detection for when node.attributes only lists the attributes specified in the markup // rather than old IE/quirks behavior where it lists every default value too "dom-attributes-explicit": document.createElement("div").attributes.length < 40 }; function has(feature){ return features[feature]; } dojo.parser = new function(){ // summary: // The Dom/Widget parsing package var _nameMap = { // Map from widget name (ex: "dijit.form.Button") to structure mapping // lowercase version of attribute names to the version in the widget ex: // { // label: "label", // onclick: "onClick" // } }; function getNameMap(proto){ // summary: // Returns map from lowercase name to attribute name in class, ex: {onclick: "onClick"} var map = {}; for(var name in proto){ if(name.charAt(0)=="_"){ continue; } // skip internal properties map[name.toLowerCase()] = name; } return map; } // Widgets like BorderContainer add properties to _Widget via dojo.extend(). // If BorderContainer is loaded after _Widget's parameter list has been cached, // we need to refresh that parameter list (for _Widget and all widgets that extend _Widget). aspect.after(dlang, "extend", function(){ _nameMap = {}; }, true); // Map from widget name (ex: "dijit.form.Button") to constructor var _ctorMap = {}; this._functionFromScript = function(script, attrData){ // summary: // Convert a // into a function // script: DOMNode // The