diff options
Diffstat (limited to 'textutils.py')
-rw-r--r-- | textutils.py | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/textutils.py b/textutils.py index c25d8c8..3c40dda 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: @@ -279,8 +280,6 @@ def apply_units( string, units, inter=None, final=float, blank_reg=_BLANK_RE, """ if inter is None: inter = final - - string = _BLANK_RE.sub('',string) values = [] for match in value_reg.finditer(string): @@ -292,7 +291,6 @@ def apply_units( string, units, inter=None, final=float, blank_reg=_BLANK_RE, if unit is not None: value *= units[unit] values.append(value) - return final(sum(values)) _LINE_RGX = re.compile('\r\n|\r+|\n') @@ -434,3 +432,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) + |