diff piecrust/sources/base.py @ 871:504ddb370df8

refactor: Fixing some issues with baking assets.
author Ludovic Chabant <ludovic@chabant.com>
date Tue, 13 Jun 2017 22:30:27 -0700
parents d9059257743c
children 1d0364614665
line wrap: on
line diff
--- a/piecrust/sources/base.py	Mon Jun 12 22:30:06 2017 -0700
+++ b/piecrust/sources/base.py	Tue Jun 13 22:30:27 2017 -0700
@@ -83,6 +83,7 @@
         self.app = app
         self.name = name
         self.config = config or {}
+        self._cache = None
 
     @property
     def is_theme_source(self):
@@ -99,6 +100,10 @@
         raise NotImplementedError()
 
     def getAllContents(self):
+        if self._cache is not None:
+            return self._cache
+
+        cache = []
         stack = collections.deque()
         stack.append(None)
         while len(stack) > 0:
@@ -112,7 +117,9 @@
                     if c.is_group:
                         stack.append(c)
                     else:
-                        yield c
+                        cache.append(c)
+        self._cache = cache
+        return cache
 
     def getContents(self, group):
         raise NotImplementedError("'%s' doesn't implement 'getContents'." %