Mercurial > piecrust2
diff piecrust/data/base.py @ 420:f1b759c188b0
internal: Optimize page data building.
Instead of loading the page to get its configuration, use a lazy-loader.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Sat, 20 Jun 2015 23:27:04 -0700 |
parents | 0e9a94b7fdfa |
children | 21e26ed867b6 |
line wrap: on
line diff
--- a/piecrust/data/base.py Sat Jun 20 23:25:38 2015 -0700 +++ b/piecrust/data/base.py Sat Jun 20 23:27:04 2015 -0700 @@ -101,7 +101,7 @@ "loaded") self._values[name] = value - def mapLoader(self, attr_name, loader): + def mapLoader(self, attr_name, loader, override_existing=False): if loader is None: if self._loaders is None or attr_name not in self._loaders: return @@ -112,11 +112,15 @@ if self._loaders is None: self._loaders = {} - if attr_name in self._loaders: + if not override_existing and attr_name in self._loaders: raise Exception( "A loader has already been mapped for: %s" % attr_name) self._loaders[attr_name] = loader + def mapValue(self, attr_name, value, override_existing=False): + loader = lambda _, __: value + self.mapLoader(attr_name, loader, override_existing=override_existing) + def _load(self): if self._values is not None: return