From a6ff58930851e3aee8a4fd517bbfde11b400795e Mon Sep 17 00:00:00 2001 From: Heungsub Lee Date: Thu, 14 Mar 2013 11:55:27 +0900 Subject: [PATCH 1/3] fix issue #13 --- rainbow | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/rainbow b/rainbow index 1cc820f..8f2f14a 100755 --- a/rainbow +++ b/rainbow @@ -310,8 +310,7 @@ def apply_filters(line): for (pattern,pattern_filter) in list(patterns.items()): # Apply filter for each match. - for match in pattern_filter['regex'].finditer(line): - line = line.replace(match.group(),pattern_filter['pattern_start'] + match.group() + pattern_filter['pattern_end']) + line = pattern_filter['regex'].sub(pattern_filter['pattern_start'] + r'\g<0>' + pattern_filter['pattern_end'], line) return line.rstrip() From 3ae609b397ecaabde584571697c52a06cbf3b828 Mon Sep 17 00:00:00 2001 From: Heungsub Lee Date: Thu, 14 Mar 2013 12:08:03 +0900 Subject: [PATCH 2/3] fix issue #14 and #15 --- rainbow | 36 ++++++++++++++++++++++++++---------- 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/rainbow b/rainbow index 8f2f14a..9099b5d 100755 --- a/rainbow +++ b/rainbow @@ -315,6 +315,17 @@ def apply_filters(line): return line.rstrip() +def reset_all(): + """ + Reset color, background color, intensity. + """ + + sys.stdout.write(chr(27)+'[39m') + sys.stdout.write(chr(27)+'[49m') + sys.stdout.write(chr(27)+'[22m') + sys.stdout.flush() + + def main(): """ Rainbow main program. @@ -415,24 +426,29 @@ def main(): else: os.close(pipe_write) pipe_fd_handle = os.fdopen(pipe_read) - while True: - try: - line = pipe_fd_handle.readline() - if line: - print(apply_filters(line[:-1])) - else: - break - except KeyboardInterrupt: - pass + try: + while True: + try: + line = pipe_fd_handle.readline() + if line: + print(apply_filters(line[:-1])) + else: + break + except KeyboardInterrupt: + pass + finally: + reset_all() os._exit(os.EX_OK) else: logger.info("No arguments given, using STDIN as input.") try: while True: - print(apply_filters(input())) + print(apply_filters(raw_input())) except (EOFError, KeyboardInterrupt): return 0 + finally: + reset_all() # Raise an error for any other exception. except Exception as exc: From baeb1ad3bc2b63d39b66665260d5421a86590cd2 Mon Sep 17 00:00:00 2001 From: Heungsub Lee Date: Mon, 1 Apr 2013 11:25:01 +0900 Subject: [PATCH 3/3] support both Python 2 and 3 --- rainbow | 4 +++- setup.py | 7 +++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/rainbow b/rainbow index 9099b5d..9458d86 100755 --- a/rainbow +++ b/rainbow @@ -442,9 +442,11 @@ def main(): else: logger.info("No arguments given, using STDIN as input.") + # Support both Python 2 and 3. + input_ = raw_input if sys.version_info[0] < 3 else input try: while True: - print(apply_filters(raw_input())) + print(apply_filters(input_())) except (EOFError, KeyboardInterrupt): return 0 finally: diff --git a/setup.py b/setup.py index 3d87fe8..4c066bd 100644 --- a/setup.py +++ b/setup.py @@ -1,6 +1,7 @@ #!/usr/bin/env python -import os, glob from distutils.core import setup +import glob +import os setup( name = "rainbow", @@ -24,6 +25,8 @@ "Intended Audience :: System Administrators", "Natural Language :: English", "Programming Language :: Python", + "Programming Language :: Python :: 2", + "Programming Language :: Python :: 3", "License :: OSI Approved :: GNU General Public License (GPL)", ], scripts=['rainbow'], @@ -31,5 +34,5 @@ ('/usr/share/rainbow/configs', glob.glob('configs/*')), ('/etc/bash_completion.d', ['completion/bash/rainbow']), ('/usr/share/zsh/site-functions', ['completion/zsh/_rainbow']) - ] + ], )