I have figured out how to display line numbers and coloured diff using html to embed in email or for a web page, but I am not sure how to go about going for a diff side by side.
Here is my piece of cake to get colour HTML based git diff with line numbers:
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)
Any help will be greatly appreciated. thanks.