single.udiff 4.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. diff --git a/src/cdiff.py b/src/cdiff.py
  2. index 1db7807..c17032f 100755
  3. --- a/src/cdiff.py
  4. +++ b/src/cdiff.py
  5. @@ -17,7 +17,7 @@ COLORS = {
  6. 'lightred' : '\x1b[1;31m',
  7. 'lightgreen' : '\x1b[1;32m',
  8. 'lightyellow' : '\x1b[1;33m',
  9. - 'lightblue ' : '\x1b[1;34m',
  10. + 'lightblue' : '\x1b[1;34m',
  11. 'lightmagenta' : '\x1b[1;35m',
  12. 'lightcyan' : '\x1b[1;36m',
  13. }
  14. @@ -31,23 +31,13 @@ def colorize(text, start_color, end_color='reset'):
  15. class Hunk(object):
  16. - def __init__(self, hunk_header, old_addr, old_offset, new_addr, new_offset):
  17. + def __init__(self, hunk_header):
  18. self._hunk_header = hunk_header
  19. - self._old_addr = old_addr
  20. - self._old_offset = old_offset
  21. - self._new_addr = new_addr
  22. - self._new_offset = new_offset
  23. self._hunk_list = [] # 2-element group (attr, line)
  24. def get_header(self):
  25. return self._hunk_header
  26. - def get_old_addr(self):
  27. - return (self._old_addr, self._old_offset)
  28. -
  29. - def get_new_addr(self):
  30. - return (self._new_addr, self._new_offset)
  31. -
  32. def append(self, attr, line):
  33. """attr: '-': old, '+': new, ' ': common"""
  34. self._hunk_list.append((attr, line))
  35. @@ -117,10 +107,10 @@ class Diff(object):
  36. line = from_info[1].strip('\x00\x01')
  37. out.append(self._markup_old(line))
  38. else:
  39. - out.append(self._markup_old('-' +
  40. - self._markup_old_mix(from_info[1])))
  41. - out.append(self._markup_new('+' +
  42. - self._markup_new_mix(to_info[1])))
  43. + out.append(self._markup_old('-') +
  44. + self._markup_old_mix(from_info[1]))
  45. + out.append(self._markup_new('+') +
  46. + self._markup_new_mix(to_info[1]))
  47. else:
  48. out.append(self._markup_common(' ' + from_info[1]))
  49. return ''.join(out)
  50. @@ -139,7 +129,7 @@ class Diff(object):
  51. return colorize(line, 'yellow')
  52. def _markup_hunk_header(self, line):
  53. - return colorize(line, 'blue')
  54. + return colorize(line, 'lightblue')
  55. def _markup_common(self, line):
  56. return colorize(line, 'reset')
  57. @@ -150,18 +140,20 @@ class Diff(object):
  58. def _markup_new(self, line):
  59. return colorize(line, 'lightgreen')
  60. - def _markup_mix(self, line, end_color):
  61. - line = line.replace('\x00-', ansi_code('red'))
  62. - line = line.replace('\x00+', ansi_code('green'))
  63. - line = line.replace('\x00^', ansi_code('lightyellow'))
  64. - line = line.replace('\x01', ansi_code(end_color))
  65. - return colorize(line, end_color)
  66. + def _markup_mix(self, line, base_color, del_color, add_color, chg_color):
  67. + line = line.replace('\x00-', ansi_code(del_color))
  68. + line = line.replace('\x00+', ansi_code(add_color))
  69. + line = line.replace('\x00^', ansi_code(chg_color))
  70. + line = line.replace('\x01', ansi_code(base_color))
  71. + return colorize(line, base_color)
  72. def _markup_old_mix(self, line):
  73. - return self._markup_mix(line, 'red')
  74. + return self._markup_mix(line, 'cyan', 'lightred', 'lightgreen',
  75. + 'yellow')
  76. def _markup_new_mix(self, line):
  77. - return self._markup_mix(line, 'green')
  78. + return self._markup_mix(line, 'lightcyan', 'lightred', 'lightgreen',
  79. + 'lightyellow')
  80. class Udiff(Diff):
  81. @@ -278,21 +270,7 @@ class DiffParser(object):
  82. hunks.append(hunk)
  83. hunk = None
  84. else:
  85. - # @@ -3,7 +3,6 @@
  86. - hunk_header = stream.pop(0)
  87. -
  88. - addr_info = hunk_header.split()[1]
  89. - assert addr_info.startswith('-')
  90. - old_addr = addr_info.split(',')[0]
  91. - old_offset = addr_info.split(',')[1]
  92. -
  93. - addr_info = hunk_header.split()[2]
  94. - assert addr_info.startswith('+')
  95. - new_addr = addr_info.split(',')[0]
  96. - new_offset = addr_info.split(',')[1]
  97. -
  98. - hunk = Hunk(hunk_header, old_addr, old_offset, new_addr,
  99. - new_offset)
  100. + hunk = Hunk(stream.pop(0))
  101. elif Udiff.is_old(stream[0]) or Udiff.is_new(stream[0]) or \
  102. Udiff.is_common(stream[0]):