Mercurial > piecrust2
comparison 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 |
comparison
equal
deleted
inserted
replaced
923:5713b6a2850d | 924:1bb704434ee2 |
---|---|
299 | 299 |
300 engine = get_template_engine(app, engine_name) | 300 engine = get_template_engine(app, engine_name) |
301 | 301 |
302 formatted_segments = {} | 302 formatted_segments = {} |
303 for seg_name, seg in page.segments.items(): | 303 for seg_name, seg in page.segments.items(): |
304 seg_text = '' | 304 try: |
305 for seg_part in seg.parts: | 305 with app.env.stats.timerScope( |
306 part_format = seg_part.fmt or format_name | 306 engine.__class__.__name__ + '_segment'): |
307 try: | 307 seg_text = engine.renderSegment( |
308 with app.env.stats.timerScope( | 308 page.content_spec, seg, page_data) |
309 engine.__class__.__name__ + '_segment'): | 309 except TemplatingError as err: |
310 part_text = engine.renderSegmentPart( | 310 err.lineno += seg.line |
311 page.content_spec, seg_part, page_data) | 311 raise err |
312 except TemplatingError as err: | 312 |
313 err.lineno += seg_part.line | 313 seg_format = seg.fmt or format_name |
314 raise err | 314 seg_text = format_text(app, seg_format, seg_text) |
315 | |
316 part_text = format_text(app, part_format, part_text) | |
317 seg_text += part_text | |
318 formatted_segments[seg_name] = seg_text | 315 formatted_segments[seg_name] = seg_text |
319 | 316 |
320 if seg_name == 'content': | 317 if seg_name == 'content': |
321 m = content_abstract_re.search(seg_text) | 318 m = content_abstract_re.search(seg_text) |
322 if m: | 319 if m: |