Mercurial > piecrust2
diff piecrust/page.py @ 454:96d363e2da4b
templating: Let Jinja2 cache the parsed template for page contents.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Mon, 06 Jul 2015 21:32:40 -0700 |
parents | 32c7c2d219d2 |
children | 612ed0526afd |
line wrap: on
line diff
--- a/piecrust/page.py Tue Jul 07 20:19:54 2015 -0700 +++ b/piecrust/page.py Mon Jul 06 21:32:40 2015 -0700 @@ -199,19 +199,18 @@ class ContentSegment(object): debug_render_func = 'debug_render' - def __init__(self, content=None, fmt=None): + def __init__(self): self.parts = [] - if content is not None: - self.parts.append(ContentSegmentPart(content, fmt)) def debug_render(self): return '\n'.join([p.content for p in self.parts]) class ContentSegmentPart(object): - def __init__(self, content, fmt=None, line=-1): + def __init__(self, content, fmt=None, offset=-1, line=-1): self.content = content self.fmt = fmt + self.offset = offset self.line = line def __str__(self): @@ -223,7 +222,8 @@ for key, seg_data in data.items(): seg = ContentSegment() for p_data in seg_data: - part = ContentSegmentPart(p_data['c'], p_data['f'], p_data['l']) + part = ContentSegmentPart(p_data['c'], p_data['f'], p_data['o'], + p_data['l']) seg.parts.append(part) segments[key] = seg return segments @@ -234,7 +234,8 @@ for key, seg in segments.items(): seg_data = [] for part in seg.parts: - p_data = {'c': part.content, 'f': part.fmt, 'l': part.line} + p_data = {'c': part.content, 'f': part.fmt, 'o': part.offset, + 'l': part.line} seg_data.append(p_data) data[key] = seg_data return data @@ -357,7 +358,8 @@ # First part, before the first format change. part_text = raw[start:matches[0].start()] parts.append( - ContentSegmentPart(part_text, first_part_fmt, line_offset)) + ContentSegmentPart(part_text, first_part_fmt, start, + line_offset)) line_offset += _count_lines(part_text) for i in range(1, num_matches): @@ -366,17 +368,20 @@ part_text = raw[m1.end() + 1:m2.start()] parts.append( ContentSegmentPart( - part_text, m1.group('fmt'), line_offset)) + part_text, m1.group('fmt'), m1.end() + 1, + line_offset)) line_offset += _count_lines(part_text) lastm = matches[-1] part_text = raw[lastm.end() + 1:end] parts.append(ContentSegmentPart( - part_text, lastm.group('fmt'), line_offset)) + part_text, lastm.group('fmt'), lastm.end() + 1, + line_offset)) return parts, line_offset else: part_text = raw[start:end] - parts = [ContentSegmentPart(part_text, first_part_fmt, line_offset)] + parts = [ContentSegmentPart(part_text, first_part_fmt, start, + line_offset)] return parts, line_offset