Refactor CompositeBuilder initialization.
authorstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Thu, 3 Jan 2002 00:21:31 +0000 (00:21 +0000)
committerstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Thu, 3 Jan 2002 00:21:31 +0000 (00:21 +0000)
git-svn-id: http://scons.tigris.org/svn/scons/trunk@187 fdb21ef1-2011-0410-befe-b5e4ea1792b1

src/CHANGES.txt
src/engine/SCons/Builder.py

index dfcf3958385c23a856a416196c4f5a485b75be42..45e5f2bf04fe5a7b61c1f8d726dba8d4e6904ba9 100644 (file)
@@ -19,6 +19,9 @@ RELEASE 0.03 -
     as separate file names, allowing prefixes and suffixes to be appended
     to each individually.
 
+  - Refactor to move CompositeBuilder initialization logic from the
+    factory wrapper to the __init__() method.
+
   From Anthony Roach:
 
   - Add a "duplicate" keyword argument to BuildDir() that can be set
index eceb66a1da00ec3a48a1da0dd033f447051bbe31..27d93e940da3f9396a946248fb0e47579596bf24 100644 (file)
@@ -126,15 +126,6 @@ def Builder(**kw):
         return apply(MultiStepBuilder, (), kw)
     elif kw.has_key('action') and (type(kw['action']) is types.DictType or
                                    isinstance(kw['action'], UserDict)):
-        action_dict = kw['action']
-        builders = []
-        for suffix, action in action_dict.items():
-            bld_kw = kw.copy()
-            bld_kw['action'] = action
-            bld_kw['src_suffix'] = suffix
-            builders.append(apply(BuilderBase, (), bld_kw))
-        del kw['action']
-        kw['builders'] = builders
         return apply(CompositeBuilder, (), kw)
     else:
         return apply(BuilderBase, (), kw)
@@ -279,14 +270,14 @@ class CompositeBuilder(BuilderBase):
     def __init__(self,  name = None,
                         prefix='',
                         suffix='',
-                        builders=[]):
+                        action = {}):
         BuilderBase.__init__(self, name=name, prefix=prefix,
                              suffix=suffix)
         self.builder_dict = {}
-        for bld in builders:
-            if not bld.src_suffix:
-                raise InternalError, "All builders supplied to CompositeBuilder class must have a src_suffix."
-            self.builder_dict[bld.src_suffix] = bld
+        for suff, act in action.items():
+             self.builder_dict[suff] = BuilderBase(name = name,
+                                                   action = act,
+                                                   src_suffix = suff)
 
     def __call__(self, env, target = None, source = None):
         ret = BuilderBase.__call__(self, env, target=target, source=source)