diff options
author | Eric Florenzano <floguy@gmail.com> | 2009-10-29 02:51:21 -0700 |
---|---|---|
committer | Eric Florenzano <floguy@gmail.com> | 2009-10-29 02:51:21 -0700 |
commit | dbb50631d3daa99965cf726df46e06a7af256b9f (patch) | |
tree | c78942f01178613c3f049de4a7c1867c7a769990 | |
parent | 8303869d3dc5e667fa0fc42e12627ce1cc6b464f (diff) | |
download | pystache-dbb50631d3daa99965cf726df46e06a7af256b9f.tar.gz |
Flattened the render_sections loop
-rw-r--r-- | pystache/template.py | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/pystache/template.py b/pystache/template.py index f28124d..56650aa 100644 --- a/pystache/template.py +++ b/pystache/template.py @@ -29,18 +29,20 @@ class Template(object): break section, section_name, inner = match.group(0, 1, 2) - if section_name in context and context[section_name]: - if hasattr(context[section_name], '__iter__'): - insides = [] - for item in context[section_name]: - ctx = context.copy() - ctx.update(item) - insides.append(self.render(inner, ctx)) - template = template.replace(section, ''.join(insides)) - else: - template = template.replace(section, inner) - else: - template = template.replace(section, '') + + it = context.get(section_name) + replacer = '' + if it and not hasattr(it, '__iter__'): + replacer = inner + elif it: + insides = [] + for item in context[section_name]: + ctx = context.copy() + ctx.update(item) + insides.append(self.render(inner, ctx)) + replacer = ''.join(insides) + + template = template.replace(section, replacer) return template |