Mercurial > piecrust2
diff piecrust/environment.py @ 427:3b658190c02b
performance: Compute default layout extensions only once.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Fri, 26 Jun 2015 09:51:06 -0700 |
parents | eef887cec776 |
children | cb3446be44b7 |
line wrap: on
line diff
--- a/piecrust/environment.py Fri Jun 26 09:49:29 2015 -0700 +++ b/piecrust/environment.py Fri Jun 26 09:51:06 2015 -0700 @@ -50,6 +50,7 @@ class Environment(object): def __init__(self): + self.app = None self.start_time = None self.exec_info_stack = ExecutionInfoStack() self.was_cache_cleaned = False @@ -59,13 +60,30 @@ self.fs_caches = { 'renders': self.rendered_segments_repository} self.fs_cache_only_for_main_page = False + self._default_layout_extensions = None self._timers = {} + @property + def default_layout_extensions(self): + if self._default_layout_extensions is not None: + return self._default_layout_extensions + + if self.app is None: + raise Exception("This environment has not been initialized yet.") + + from piecrust.rendering import get_template_engine + dte = get_template_engine(self.app, None) + self._default_layout_extensions = ['.' + e.lstrip('.') + for e in dte.EXTENSIONS] + return self._default_layout_extensions + def initialize(self, app): + self.app = app self.start_time = time.perf_counter() self.exec_info_stack.clear() self.was_cache_cleaned = False self.base_asset_url_format = '%uri%' + self._onSubCacheDirChanged(app) def registerTimer(self, category, *, raise_if_registered=True):