diff options
author | Nicolas Chauvat <nicolas.chauvat@logilab.fr> | 2009-08-31 17:38:58 +0200 |
---|---|---|
committer | Nicolas Chauvat <nicolas.chauvat@logilab.fr> | 2009-08-31 17:38:58 +0200 |
commit | c24c4f2a0553563c974047a699245d42d1f712c1 (patch) | |
tree | 67e75e5d44d0262de1601f92086f3de19d7ebe96 /textutils.py | |
parent | e5221fb965f4bd48b9241ddffb7b8ca69143d18f (diff) | |
download | logilab-common-c24c4f2a0553563c974047a699245d42d1f712c1.tar.gz |
F [textutils] add diff_colorize_ansi()
Diffstat (limited to 'textutils.py')
-rw-r--r-- | textutils.py | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/textutils.py b/textutils.py index c25d8c8..1c24c70 100644 --- a/textutils.py +++ b/textutils.py @@ -30,6 +30,7 @@ unquote, colorize_ansi """ __docformat__ = "restructuredtext en" +import sys import re from unicodedata import normalize as _uninormalize try: @@ -434,3 +435,20 @@ def colorize_ansi(msg, color=None, style=None): return '%s%s%s' % (escape_code, msg, ANSI_RESET) return msg +DIFF_STYLE = {'separator': 'cyan', 'remove': 'red', 'add': 'green'} + +def diff_colorize_ansi(lines, out=sys.stdout, style=DIFF_STYLE): + for line in lines: + if line[:4] in ('--- ', '+++ '): + out.write(colorize_ansi(line, style['separator'])) + elif line[0] == '-': + out.write(colorize_ansi(line, style['remove'])) + elif line[0] == '+': + out.write(colorize_ansi(line, style['add'])) + elif line[:4] == '--- ': + out.write(colorize_ansi(line, style['separator'])) + elif line[:4] == '+++ ': + out.write(colorize_ansi(line, style['separator'])) + else: + out.write(line) + |