summaryrefslogtreecommitdiff
path: root/pystache
diff options
context:
space:
mode:
authorChris Jerdonek <chris.jerdonek@gmail.com>2012-05-04 05:14:04 -0700
committerChris Jerdonek <chris.jerdonek@gmail.com>2012-05-04 05:38:20 -0700
commit4a4b4ddc5411e9e938cfe9f6c8247bdce29a75a6 (patch)
treec047e4381fa780fd51ec5d40fd89b16478c77902 /pystache
parentbc2ca04c18140b9eb682bb9b026ba7ed51ed45e8 (diff)
downloadpystache-4a4b4ddc5411e9e938cfe9f6c8247bdce29a75a6.tar.gz
Simplified Renderer._make_resolve_partial().
Diffstat (limited to 'pystache')
-rw-r--r--pystache/renderer.py59
1 files changed, 30 insertions, 29 deletions
diff --git a/pystache/renderer.py b/pystache/renderer.py
index 0c50577..f8c40a9 100644
--- a/pystache/renderer.py
+++ b/pystache/renderer.py
@@ -232,48 +232,49 @@ class Renderer(object):
return load_template
- # TODO: simplify this method.
- def _make_resolve_partial(self):
+ def _make_load_partial(self):
"""
- Return the resolve_partial function to pass to RenderEngine.__init__().
+ Return a function that loads a partial by name.
"""
if self.partials is None:
- load_template = self._make_load_template()
-
- if self.missing_tags == MissingTags.strict:
- return load_template
- # Otherwise, ignore missing tags.
+ return self._make_load_template()
- def resolve_partial(name):
- try:
- return load_template(name)
- except TemplateNotFoundError:
- return u''
-
- return resolve_partial
-
- # Otherwise, create a resolve_partial function from the custom partial
- # loader that satisfies RenderEngine requirements (and that provides
- # a nicer exception, etc).
+ # Otherwise, create a function from the custom partial loader.
partials = self.partials
- if self.missing_tags == MissingTags.strict:
- def on_template_none(name, partials):
- raise TemplateNotFoundError("Name %s not found in partials: %s" %
- (repr(name), type(partials)))
- else:
- # Otherwise, ignore missing tags.
- on_template_none = lambda name, partials: u''
-
- def resolve_partial(name):
+ def load_partial(name):
+ # TODO: consider using EAFP here instead.
+ # http://docs.python.org/glossary.html#term-eafp
+ # This would mean requiring that the custom partial loader
+ # raise a KeyError on name not found.
template = partials.get(name)
if template is None:
- return on_template_none(name, partials)
+ raise TemplateNotFoundError("Name %s not found in partials: %s" %
+ (repr(name), type(partials)))
# RenderEngine requires that the return value be unicode.
return self._to_unicode_hard(template)
+ return load_partial
+
+ def _make_resolve_partial(self):
+ """
+ Return the resolve_partial function to pass to RenderEngine.__init__().
+
+ """
+ load_partial = self._make_load_partial()
+
+ if self.missing_tags == MissingTags.strict:
+ return load_partial
+ # Otherwise, ignore missing tags.
+
+ def resolve_partial(name):
+ try:
+ return load_partial(name)
+ except TemplateNotFoundError:
+ return u''
+
return resolve_partial
def _make_render_engine(self):