From e1f07901feda37d0ba4f55cda22ef7932e35e67d Mon Sep 17 00:00:00 2001 From: YUI Builder Date: Thu, 14 Jan 2010 12:23:41 -0800 Subject: [PATCH] Build: yui3-1717 --- api/BaseBuild.js.html | 63 ++++++++++++++++++++++++++++++++----------- 1 file changed, 48 insertions(+), 15 deletions(-) diff --git a/api/BaseBuild.js.html b/api/BaseBuild.js.html index 1046093a367..a0bcd16f73d 100644 --- a/api/BaseBuild.js.html +++ b/api/BaseBuild.js.html @@ -58,7 +58,17 @@

base  3.0.0

*/ var Base = Y.Base, - L = Y.Lang; + L = Y.Lang, + + mergeAttrs = function(m, e) { + if (!m.ATTRS && e.ATTRS) { + m.ATTRS = {}; + } + + if (e.ATTRS) { + Y.aggregate(m.ATTRS, e.ATTRS, true); + } + }; /** * The build configuration for the Base class. @@ -74,7 +84,9 @@

base  3.0.0

* @private */ Base._buildCfg = { - aggregates : ["ATTRS", "_PLUG", "_UNPLUG"] + // TODO: The name "custBuild" may change, not ready for public use. + custBuild : mergeAttrs, + aggregates : ["_PLUG", "_UNPLUG"] }; /** @@ -117,12 +129,14 @@

base  3.0.0

var build = Base.build, builtClass = build._getClass(main, cfg), - aggregates = build._getAggregates(main, cfg), + buildCfg = build._getBuildCfg(main, cfg), + aggregates = buildCfg.aggregates, + custBuildSteps = buildCfg.custBuild, dynamic = builtClass._yuibuild.dynamic, - i, l, val, extClass; + i, l, j, val, extClass; // Shallow isolate aggregates - if (dynamic) { + if (dynamic && aggregates) { if (aggregates) { for (i = 0, l = aggregates.length; i < l; ++i) { val = aggregates[i]; @@ -142,7 +156,13 @@

base  3.0.0

Y.aggregate(builtClass, extClass, true, aggregates); } - // Old augment + if (custBuildSteps) { + for (j = 0; j < custBuildSteps.length; j++) { + custBuildSteps[j](builtClass, extClass); + } + } + + // Old non-displacing augment Y.mix(builtClass, extClass, true, null, 1); builtClass._yuibuild.exts.push(extClass); @@ -204,17 +224,24 @@

base  3.0.0

return builtClass; }, - - _getAggregates : function(main, cfg) { - var aggr = [], + + _getBuildCfg : function(main, cfg) { + var aggr = [], + steps = [], + buildCfg, cfgAggr = (cfg && cfg.aggregates), - c = main, - classAggr; + cfgCustBuild = (cfg && cfg.custBuild), + c = main; while (c && c.prototype) { - classAggr = c._buildCfg && c._buildCfg.aggregates; - if (classAggr) { - aggr = aggr.concat(classAggr); + buildCfg = c._buildCfg; + if (buildCfg) { + if (buildCfg.aggregates) { + aggr = aggr.concat(buildCfg.aggregates); + } + if (buildCfg.custBuild) { + steps.push(buildCfg.custBuild); + } } c = c.superclass ? c.superclass.constructor : null; } @@ -222,8 +249,14 @@

base  3.0.0

if (cfgAggr) { aggr = aggr.concat(cfgAggr); } + if (cfgCustBuild) { + steps.push(cfg.cfgBuild); + } - return aggr; + return { + aggregates: aggr, + custBuild: steps + }; } });