我已经想出如何使用html显示行号和彩色差异以嵌入电子邮件或网页,但我不知道如何去做并排的差异。
这是我的小蛋糕,以获得基于颜色HTML的git diff与行号:
openTag = """<span style='font-size:1.0em; color: """
openTagEnd = ";font-family: courier, arial, helvetica, sans-serif;'>"
nbsp = ' '
def _traditional_diff(linesfromDiff, openTag, openTagEnd, nbsp):
lines = []
line_num = 0
def updateLine(line_num, color, line):
tabs = line.count('\t')
lines.append("%s:%s#%s%s%s%s</span><br>" %
((repr(line_num), openTag, color, openTagEnd, nbsp*tabs, line)))
return lines
for line in linesfromDiff:
if (line.startswith('diff ') or
line.startswith('index ') or
line.startswith('--- ')):
color = "10EDF5"
updateLine(line_num, color, line)
continue
if line.startswith('-'):
color = "ff0000"
updateLine(line_num, color, line)
continue
if line.startswith('+++ '):
color = "07CB14"
updateLine(line_num, color, line)
continue
if line.startswith('@@ '):
_, old_nr, new_nr, _ = line.split(' ', 3)
line_num = int(new_nr.split(',')[0])
color = "5753BE"
updateLine(line_num, color, line)
continue
if line.startswith('+'):
color = "007900"
updateLine(line_num, color, line)
if line.startswith('+') or line.startswith(' '):
line_num += 1
return ''.join(lines)
任何帮助将不胜感激。感谢。
答案 0 :(得分:0)
使用以下过程:
将openTag包装在表格列中:
<td>
将nbsp
替换为列的结束标记:
</td>
将循环结果放在表格中
<table><tr>%s</tr></table>
在ol标签中包裹每一行
每个行号都是li标签
<强>参考强>