changeset 2297:ad2a8e8b52da

core (tools/common/regex): new ansiRemove method to remove ANSI escape codes from a string
author Goffi <goffi@goffi.org>
date Sun, 02 Jul 2017 19:53:44 +0200
parents 1a64fd7b648d
children 276e546b7619
files src/tools/common/regex.py
diffstat 1 files changed, 10 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/tools/common/regex.py	Sun Jul 02 19:52:21 2017 +0200
+++ b/src/tools/common/regex.py	Sun Jul 02 19:53:44 2017 +0200
@@ -23,6 +23,8 @@
 path_escape = {'%': '%25', '/': '%2F', '\\': '%5c'}
 path_escape_rev = {re.escape(v):k for k, v in path_escape.iteritems()}
 path_escape = {re.escape(k):v for k, v in path_escape.iteritems()}
+# thanks to Martijn Pieters (https://stackoverflow.com/a/14693789)
+RE_ANSI_REMOVE = re.compile(r'\x1b[^m]*m')
 
 
 def reJoin(exps):
@@ -60,3 +62,11 @@
     @return (str, unicode): unescaped string
     """
     return reSubDict(path_escape_rev_re, path_escape_rev, string)
+
+def ansiRemove(string):
+    """Remove ANSI escape codes from string
+
+    @param string(basestr): string to filter
+    @return (str, unicode): string without ANSI escape codes
+    """
+    return RE_ANSI_REMOVE.sub('', string)