annotate examples/trac/trac/mimeview/patch.py @ 39:93b4dcbafd7b trunk

Copy Trac to main branch.
author cmlenz
date Mon, 03 Jul 2006 18:53:27 +0000
parents
children
rev   line source
39
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
1 # -*- coding: utf-8 -*-
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
2 #
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
3 # Copyright (C) 2005 Edgewall Software
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
4 # Copyright (C) 2005 Christopher Lenz <cmlenz@gmx.de>
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
5 # All rights reserved.
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
6 #
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
7 # This software is licensed as described in the file COPYING, which
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
8 # you should have received as part of this distribution. The terms
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
9 # are also available at http://trac.edgewall.com/license.html.
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
10 #
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
11 # This software consists of voluntary contributions made by many
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
12 # individuals. For the exact contribution history, see the revision
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
13 # history and logs, available at http://projects.edgewall.com/trac/.
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
14 #
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
15 # Author: Christopher Lenz <cmlenz@gmx.de>
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
16 # Ludvig Strigeus
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
17
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
18 from trac.core import *
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
19 from trac.mimeview.api import content_to_unicode, IHTMLPreviewRenderer, Mimeview
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
20 from trac.util.markup import escape, Markup
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
21 from trac.web.chrome import add_stylesheet
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
22
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
23 __all__ = ['PatchRenderer']
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
24
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
25
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
26 class PatchRenderer(Component):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
27 """Structured display of patches in unified diff format, similar to the
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
28 layout provided by the changeset view.
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
29 """
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
30
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
31 implements(IHTMLPreviewRenderer)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
32
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
33 diff_cs = """
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
34 <?cs include:'macros.cs' ?>
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
35 <div class="diff"><ul class="entries"><?cs
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
36 each:file = diff.files ?><li class="entry">
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
37 <h2><?cs var:file.filename ?></h2>
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
38 <table class="inline" summary="Differences" cellspacing="0">
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
39 <colgroup><col class="lineno" /><col class="lineno" /><col class="content" /></colgroup>
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
40 <thead><tr>
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
41 <th><?cs var:file.oldrev ?></th>
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
42 <th><?cs var:file.newrev ?></th>
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
43 <th>&nbsp;</th>
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
44 </tr></thead><?cs
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
45 each:change = file.diff ?><?cs
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
46 call:diff_display(change, diff.style) ?><?cs
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
47 if:name(change) < len(file.diff) - 1 ?>
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
48 <tbody class="skipped">
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
49 <tr><th>&hellip;</th><th>&hellip;</th><td>&nbsp;</td></tr>
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
50 </tbody><?cs
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
51 /if ?><?cs
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
52 /each ?>
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
53 </table>
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
54 </li><?cs /each ?>
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
55 </ul></div>
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
56 """ # diff_cs
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
57
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
58 # IHTMLPreviewRenderer methods
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
59
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
60 def get_quality_ratio(self, mimetype):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
61 if mimetype == 'text/x-diff':
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
62 return 8
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
63 return 0
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
64
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
65 def render(self, req, mimetype, content, filename=None, rev=None):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
66 from trac.web.clearsilver import HDFWrapper
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
67
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
68 content = content_to_unicode(self.env, content, mimetype)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
69 d = self._diff_to_hdf(content.splitlines(),
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
70 Mimeview(self.env).tab_width)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
71 if not d:
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
72 raise TracError, 'Invalid unified diff content'
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
73 hdf = HDFWrapper(loadpaths=[self.env.get_templates_dir(),
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
74 self.config.get('trac', 'templates_dir')])
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
75 hdf['diff.files'] = d
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
76
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
77 add_stylesheet(req, 'common/css/diff.css')
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
78 return hdf.render(hdf.parse(self.diff_cs))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
79
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
80 # Internal methods
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
81
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
82 # FIXME: This function should probably share more code with the
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
83 # trac.versioncontrol.diff module
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
84 def _diff_to_hdf(self, difflines, tabwidth):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
85 """
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
86 Translate a diff file into something suitable for inclusion in HDF.
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
87 The result is [(filename, revname_old, revname_new, changes)],
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
88 where changes has the same format as the result of
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
89 `trac.versioncontrol.diff.hdf_diff`.
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
90
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
91 If the diff cannot be parsed, this method returns None.
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
92 """
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
93 def _markup_intraline_change(fromlines, tolines):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
94 from trac.versioncontrol.diff import _get_change_extent
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
95 for i in xrange(len(fromlines)):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
96 fr, to = fromlines[i], tolines[i]
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
97 (start, end) = _get_change_extent(fr, to)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
98 if start != 0 and end != 0:
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
99 fromlines[i] = fr[:start] + '\0' + fr[start:end+len(fr)] + \
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
100 '\1' + fr[end:]
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
101 tolines[i] = to[:start] + '\0' + to[start:end+len(to)] + \
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
102 '\1' + to[end:]
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
103
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
104 import re
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
105 space_re = re.compile(' ( +)|^ ')
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
106 def htmlify(match):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
107 div, mod = divmod(len(match.group(0)), 2)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
108 return div * '&nbsp; ' + mod * '&nbsp;'
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
109
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
110 output = []
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
111 filename, groups = None, None
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
112 lines = iter(difflines)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
113 try:
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
114 line = lines.next()
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
115 while True:
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
116 if not line.startswith('--- '):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
117 line = lines.next()
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
118 continue
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
119
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
120 # Base filename/version
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
121 words = line.split(None, 2)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
122 filename, fromrev = words[1], 'old'
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
123 groups, blocks = None, None
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
124
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
125 # Changed filename/version
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
126 line = lines.next()
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
127 if not line.startswith('+++ '):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
128 return None
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
129
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
130 words = line.split(None, 2)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
131 if len(words[1]) < len(filename):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
132 # Always use the shortest filename for display
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
133 filename = words[1]
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
134 groups = []
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
135 output.append({'filename' : filename, 'oldrev' : fromrev,
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
136 'newrev' : 'new', 'diff' : groups})
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
137
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
138 for line in lines:
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
139 # @@ -333,10 +329,8 @@
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
140 r = re.match(r'@@ -(\d+),(\d+) \+(\d+),(\d+) @@', line)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
141 if not r:
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
142 break
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
143 blocks = []
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
144 groups.append(blocks)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
145 fromline,fromend,toline,toend = map(int, r.groups())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
146 last_type = None
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
147
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
148 fromend += fromline
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
149 toend += toline
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
150
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
151 while fromline < fromend or toline < toend:
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
152 line = lines.next()
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
153
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
154 # First character is the command
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
155 command, line = line[0], line[1:]
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
156 # Make a new block?
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
157 if (command == ' ') != last_type:
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
158 last_type = command == ' '
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
159 blocks.append({'type': last_type and 'unmod' or 'mod',
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
160 'base.offset': fromline - 1,
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
161 'base.lines': [],
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
162 'changed.offset': toline - 1,
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
163 'changed.lines': []})
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
164 if command == ' ':
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
165 blocks[-1]['changed.lines'].append(line)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
166 blocks[-1]['base.lines'].append(line)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
167 fromline += 1
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
168 toline += 1
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
169 elif command == '+':
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
170 blocks[-1]['changed.lines'].append(line)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
171 toline += 1
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
172 elif command == '-':
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
173 blocks[-1]['base.lines'].append(line)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
174 fromline += 1
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
175 else:
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
176 return None
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
177 line = lines.next()
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
178 except StopIteration:
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
179 pass
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
180
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
181 # Go through all groups/blocks and mark up intraline changes, and
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
182 # convert to html
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
183 for o in output:
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
184 for group in o['diff']:
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
185 for b in group:
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
186 f, t = b['base.lines'], b['changed.lines']
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
187 if b['type'] == 'mod':
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
188 if len(f) == 0:
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
189 b['type'] = 'add'
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
190 elif len(t) == 0:
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
191 b['type'] = 'rem'
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
192 elif len(f) == len(t):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
193 _markup_intraline_change(f, t)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
194 for i in xrange(len(f)):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
195 line = f[i].expandtabs(tabwidth)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
196 line = escape(line).replace('\0', '<del>') \
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
197 .replace('\1', '</del>')
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
198 f[i] = Markup(space_re.sub(htmlify, line))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
199 for i in xrange(len(t)):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
200 line = t[i].expandtabs(tabwidth)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
201 line = escape(line).replace('\0', '<ins>') \
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
202 .replace('\1', '</ins>')
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
203 t[i] = Markup(space_re.sub(htmlify, line))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
204 return output
Copyright (C) 2012-2017 Edgewall Software