diff --git a/CHANGES.txt b/CHANGES.txt index 049e4a6..93ad8f0 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -5,6 +5,17 @@ unreleased the ``preprocessor`` will be wrapped in a function that invokes the preprocessor with pyramid's config settings as the second argument. +- Added a debugtoolbar panel for debugging use + debugtoolbar.panels = + pyramid_mako.debugtoolbar.panels.main.PyramidMakoMainDebugPanel + +- `add_mako_renderer` now accepts a list of `extensions` instead of a single + `extension`. This allows for multiple extensions to share a single lookup. + Under the previous system, `.mako` and `.mak` would be registered to different + render factories and template lookups; if a `.mako` referenced a `.mak` file, + then it would be compiled into the `.mako` template lookup and recompiled + again for the `.mak` template lookup if accessed directly. + 1.0.2 (2014-04-22) ================== diff --git a/pyramid_mako/__init__.py b/pyramid_mako/__init__.py index d4b1f16..59beb65 100644 --- a/pyramid_mako/__init__.py +++ b/pyramid_mako/__init__.py @@ -161,7 +161,7 @@ def __call__(self, value, system): class MakoRendererFactory(object): lookup = None - registered_ext = None + registered_extensions = None # debugging only renderer_factory = staticmethod(MakoLookupTemplateRenderer) # testing def __call__(self, info): @@ -239,8 +239,8 @@ def preprocessor_injector(template): preprocessor=preprocessor, ) -def add_mako_renderer(config, extension, settings_prefix='mako.'): - """ Register a Mako renderer for a template extension. +def add_mako_renderer(config, extensions, settings_prefix='mako.'): + """ Register a Mako renderer for a template extension(s). This function is available on the Pyramid configurator after including the package: @@ -251,20 +251,29 @@ def add_mako_renderer(config, extension, settings_prefix='mako.'): The renderer will load its configuration from a prefix in the Pyramid settings dictionary. The default prefix is 'mako.'. + + Multiple extensions can be registered to a single factory and template + lookup by passing in a list or tuple for the extensions arg. + + .. code-block:: python + + config.add_mako_renderer(('.mako', '.mak'), settings_prefix='mako.') """ + extensions = extensions if isinstance(extensions, (list, tuple)) else (extensions, ) renderer_factory = MakoRendererFactory() - config.add_renderer(extension, renderer_factory) + renderer_factory.registered_extensions = extensions + for ext in extensions: + config.add_renderer(ext, renderer_factory) def register(): - registry = config.registry - opts = parse_options_from_settings( - registry.settings, settings_prefix, config.maybe_dotted) - lookup = PkgResourceTemplateLookup(**opts) + if renderer_factory.lookup is None: + opts = parse_options_from_settings( + config.registry.settings, settings_prefix, config.maybe_dotted) + lookup = PkgResourceTemplateLookup(**opts) + renderer_factory.lookup = lookup - renderer_factory.lookup = lookup - renderer_factory.registered_ext = extension - - config.action(('mako-renderer', extension), register) + for ext in extensions: + config.action(('mako-renderer', ext), register) def includeme(config): """ Set up standard configurator registrations. Use via: @@ -280,6 +289,6 @@ def includeme(config): :func:`~pyramid_mako.add_mako_renderer` documentation for more information. """ config.add_directive('add_mako_renderer', add_mako_renderer) - - config.add_mako_renderer('.mako') - config.add_mako_renderer('.mak') + config.add_mako_renderer(('.mako', + '.mak', + )) diff --git a/pyramid_mako/debugtoolbar/panels/templates/main.dbtmako b/pyramid_mako/debugtoolbar/panels/templates/main.dbtmako index b72bd6d..ccfd60f 100644 --- a/pyramid_mako/debugtoolbar/panels/templates/main.dbtmako +++ b/pyramid_mako/debugtoolbar/panels/templates/main.dbtmako @@ -3,16 +3,16 @@ % for renderer in mako_renderers:
renderer | -${renderer} | +renderer extensions | +${renderer.registered_extensions} |
---|---|---|---|
renderer extension | -${renderer.registered_ext} |
+ renderer | +${renderer}, ${id(renderer)} |
lookup | -${renderer.lookup} | +${renderer.lookup}, ${id(renderer.lookup)} | ##${renderer.lookup.__dict__} |