diff --git a/euscanwww/djeuscan/templatetags/djeuscan_helpers.py b/euscanwww/djeuscan/templatetags/djeuscan_helpers.py
index 2df1d07..427b421 100644
--- a/euscanwww/djeuscan/templatetags/djeuscan_helpers.py
+++ b/euscanwww/djeuscan/templatetags/djeuscan_helpers.py
@@ -3,8 +3,6 @@ from django.conf import settings
from euscan.version import is_version_type_stable, get_version_type
-from djeuscan.utils import plaintext2html
-
register = template.Library()
@@ -73,4 +71,6 @@ def version_type(version):
@register.filter
def ansi_to_html(text):
- return plaintext2html(text)
+ from ansi2html import Ansi2HTMLConverter
+ conv = Ansi2HTMLConverter(inline=True, linkify=True)
+ return conv.convert(text, full=False)
diff --git a/euscanwww/djeuscan/utils.py b/euscanwww/djeuscan/utils.py
deleted file mode 100644
index 60965e0..0000000
--- a/euscanwww/djeuscan/utils.py
+++ /dev/null
@@ -1,92 +0,0 @@
-import re
-import cgi
-
-colorcodes = {
- 'bold': ('\\\u001b[01m|\\\u001b[36;01m', '\\\u001b[39;49;00m'),
- 'cyan': ('\\\u001b[36m', '\\\u001b[39m'),
- 'blue': ('\\\u001b[34m', '\\\u001b[39m'),
- 'red': ('\\\u001b[31m', '\\\u001b[39m'),
- 'magenta': ('\\\u001b[35m', '\\\u001b[39m'),
- 'green': ('\\\u001b[32;01m', '\\\u001b[39;49;00m'),
- 'underline': ('\\\u001b[4m', '\\\u001b[24m'),
-}
-
-
-def recolor(color, text):
- regexp = r"(?:%s)(.*?)(?:%s)" % colorcodes[color]
- regexp = regexp.replace('[', r'\[')
- return re.sub(
- regexp, r'''\1''' % color, text
- )
-
-
-def bold(text):
- regexp = "(?:%s)(.*?)(?:%s)" % colorcodes['bold']
- regexp = regexp.replace('[', r'\[')
- return re.sub(regexp, r'\1', text)
-
-
-def underline(text):
- regexp = "(?:%s)(.*?)(?:%s)" % colorcodes['underline']
- regexp = regexp.replace('[', r'\[')
- return re.sub(
- regexp, r'\1', text
- )
-
-
-def removebells(text):
- return text.replace('\07', '')
-
-
-def removebackspaces(text):
- backspace_or_eol = r'(.\010)|(\033\[K)'
- n = 1
- while n > 0:
- text, n = re.subn(backspace_or_eol, '', text, 1)
- return text
-
-
-def plaintext2html(text, tabstop=4):
- def do_sub(m):
- c = m.groupdict()
- if c['htmlchars']:
- return cgi.escape(c['htmlchars'])
- if c['lineend']:
- return '
'
- elif c['space']:
- t = m.group().replace('\t', ' ' * tabstop)
- t = t.replace(' ', ' ')
- return t
- elif c['space'] == '\t':
- return ' ' * tabstop
- else:
- url = m.group('protocal')
- if url.startswith(' '):
- prefix = ' '
- url = url[1:]
- else:
- prefix = ''
- last = m.groups()[-1]
- if last in ['\n', '\r', '\r\n']:
- last = '
'
- return '%s%s' % (prefix, url)
- re_string = re.compile(
- r'(?P[<&>])|(?P^[ \t]+)|(?P\r\n|\r|\n)|'
- r'(?P(^|\s)((http|ftp)://.*?))(\s|$)',
- re.S | re.M | re.I
- )
- result = re.sub(re_string, do_sub, text)
-
- result = re.sub(r"\\n", "
", result)
-
- result = recolor('cyan', result)
- result = recolor('blue', result)
- result = recolor('red', result)
- result = recolor('magenta', result)
- result = recolor('green', result)
- result = bold(result)
- result = underline(result)
- result = removebells(result)
- result = removebackspaces(result)
-
- return result