diff --git a/src/common/helpers.py b/src/common/helpers.py index eb34e305f..752aebf75 100644 --- a/src/common/helpers.py +++ b/src/common/helpers.py @@ -19,6 +19,7 @@ from common import i18n _ = i18n._ +import sre def get_uf_show(show): '''returns a userfriendly string for dnd/xa/chat @@ -49,4 +50,28 @@ def get_sorted_keys(adict): keys = adict.keys() keys.sort() return keys - \ No newline at end of file + +def to_one_line(msg): + msg = msg.replace('\\', '\\\\') + msg = msg.replace('\n', '\\n') + # s1 = 'test\ntest\\ntest' + # s11 = s1.replace('\\', '\\\\') + # s12 = s11.replace('\n', '\\n') + # s12 + # 'test\\ntest\\\\ntest' + return msg + +def from_one_line(msg): + # (?<!\\) is a lookbehind assertion which asks anything but '\' + # to match the regexp that follows it + + # So here match '\\n' but not if you have a '\' before that + re = sre.compile(r'(?<!\\)\\n') + msg = re.sub('\n', msg) + msg = msg.replace('\\\\', '\\') + # s12 = 'test\\ntest\\\\ntest' + # s13 = re.sub('\n', s12) + # s14 s13.replace('\\\\', '\\') + # s14 + # 'test\ntest\\ntest' + return msg diff --git a/src/common/logger.py b/src/common/logger.py index fa4ae1279..c56843c24 100644 --- a/src/common/logger.py +++ b/src/common/logger.py @@ -20,10 +20,10 @@ import os import sys import time -import sre import common.gajim from common import i18n _ = i18n._ +from common import helpers LOGPATH = os.path.expanduser('~/.gajim/logs') if os.name == 'nt': @@ -54,12 +54,6 @@ class Logger: print 'creating', LOGPATH, 'directory' os.mkdir(LOGPATH) - # (?<!\\) is a lookbehind assertion which asks anything but '\' - # to match the regexp that follows it - - # So here match '\\n' but not if you have a '\' before that - self.re = sre.compile(r'(?<!\\)\\n') - def write(self, kind, msg, jid, show = None, tim = None): if not tim: tim = time.time() @@ -68,18 +62,7 @@ class Logger: if not msg: msg = '' - msg = msg.replace('\\', '\\\\') - msg = msg.replace('\n', '\\n') - # s1 = 'test\ntest' - # s2 = 'test\\ntest' - # s11 = s1.replace('\\', '\\\\') - # s21 = s2.replace('\\', '\\\\') - # s12 = s11.replace('\n', '\\n') - # s22 = s21.replace('\n', '\\n') - # s12 - # 'test\\ntest' - # s22 - # test\\\\ntest' + msg = helpers.to_one_line(msg) if len(jid.split('/')) > 1: ji, nick = jid.split('/', 1) else: @@ -176,17 +159,7 @@ class Logger: while nb < end_line: line = fic.readline() if line: - line = self.re.sub('\n', line) - line = line.replace('\\\\', '\\') - # re = sre.compile(r'(?<!\\)\\n') - # s13 = re.sub('\n', s12) - # s23 = re.sub('\n', s22) - # s14 = s13.replace('\\\\', '\\') - # s24 = s23.replace('\\\\', '\\') - # s14 - # 'test\ntest' - # s24 - # 'test\\ntest' + line = helpers.from_one_line(line) lineSplited = line.split(':') if len(lineSplited) > 2: lines.append(lineSplited)