diff piecrust/rendering.py @ 924:1bb704434ee2

formatting: Remove segment parts, you can use template tags instead. Segment parts were used to switch formatters insides a given content segment, but that's also achievable with template tags like `pcformat` in Jinja to some degree. It's not totally the same but removing it simplifies the code and improves performance.
author Ludovic Chabant <ludovic@chabant.com>
date Sun, 01 Oct 2017 20:36:04 -0700
parents f2b75e4be981
children 45ad976712ec
line wrap: on
line diff
--- a/piecrust/rendering.py	Fri Sep 29 19:59:19 2017 -0700
+++ b/piecrust/rendering.py	Sun Oct 01 20:36:04 2017 -0700
@@ -301,20 +301,17 @@
 
     formatted_segments = {}
     for seg_name, seg in page.segments.items():
-        seg_text = ''
-        for seg_part in seg.parts:
-            part_format = seg_part.fmt or format_name
-            try:
-                with app.env.stats.timerScope(
-                        engine.__class__.__name__ + '_segment'):
-                    part_text = engine.renderSegmentPart(
-                        page.content_spec, seg_part, page_data)
-            except TemplatingError as err:
-                err.lineno += seg_part.line
-                raise err
+        try:
+            with app.env.stats.timerScope(
+                    engine.__class__.__name__ + '_segment'):
+                seg_text = engine.renderSegment(
+                    page.content_spec, seg, page_data)
+        except TemplatingError as err:
+            err.lineno += seg.line
+            raise err
 
-            part_text = format_text(app, part_format, part_text)
-            seg_text += part_text
+        seg_format = seg.fmt or format_name
+        seg_text = format_text(app, seg_format, seg_text)
         formatted_segments[seg_name] = seg_text
 
         if seg_name == 'content':