From db5264af3c5a609703976c6f8942df7186a7580b Mon Sep 17 00:00:00 2001 From: John-David Dalton Date: Sun, 14 Jul 2013 11:20:59 -0700 Subject: [PATCH] Recursively add props and vars to include in the build in build.js. Former-commit-id: fe7b8cad6ee6df1443424e05836e00a81f532af8 --- build.js | 37 ++++++++++++++++++++++++++----------- 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/build.js b/build.js index b29deb055..71a3a53c2 100644 --- a/build.js +++ b/build.js @@ -2860,19 +2860,34 @@ }()); if (!isNoDep) { - // additional variables to include in the build - includeProps = _.uniq(_.transform(propDependencyMap, function(result, propNames, funcName) { - if (_.contains(buildFuncs, funcName)) { - push.apply(result, propNames); - } - }, includeProps)); + (function() { + function expand(result, depMap, funcNames, stack) { + stack || (stack = []); + return _.uniq(_.transform(funcNames || depMap, function(result, identifiers, funcName) { + // juggle arguments + if (funcNames) { + funcName = identifiers; + identifiers = depMap[funcName] || []; + } + if (!_.contains(stack, funcName) && _.contains(buildFuncs, funcName)) { + var deps = _.uniq(_.transform(identifiers, function(deps, identifier) { + push.apply(deps, getDependencies(identifier)); + })); - // additional properties to include in the build - includeVars = _.uniq(_.transform(varDependencyMap, function(result, varNames, funcName) { - if (_.contains(buildFuncs, funcName)) { - push.apply(result, varNames); + stack.push(funcName); + push.apply(result, identifiers); + + buildFuncs = _.union(buildFuncs, deps); + expand(result, depMap, deps); + } + }, result)); } - }, includeVars)); + // add properties to include in the build + expand(includeProps, propDependencyMap); + + // add variables to include in the build + expand(includeVars, varDependencyMap); + }()); } /*------------------------------------------------------------------------*/