From 332a5c2553db41de777473a1e1be9cd1522c9496 Mon Sep 17 00:00:00 2001 From: Emmanuel Gil Peyrot Date: Thu, 31 Mar 2016 18:54:41 +0100 Subject: Move the src directory to poezio, for better cython compatibility. --- poezio/windows/funcs.py | 54 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 poezio/windows/funcs.py (limited to 'poezio/windows/funcs.py') diff --git a/poezio/windows/funcs.py b/poezio/windows/funcs.py new file mode 100644 index 00000000..f1401628 --- /dev/null +++ b/poezio/windows/funcs.py @@ -0,0 +1,54 @@ +""" +Standalone functions used by the modules +""" + +import string + +from . base_wins import FORMAT_CHAR, format_chars + +def find_first_format_char(text, chars=None): + if chars is None: + chars = format_chars + pos = -1 + for char in chars: + p = text.find(char) + if p == -1: + continue + if pos == -1 or p < pos: + pos = p + return pos + +def truncate_nick(nick, size=10): + if size < 1: + size = 1 + if nick and len(nick) > size: + return nick[:size]+'…' + return nick + +def parse_attrs(text, previous=None): + next_attr_char = text.find(FORMAT_CHAR) + if previous: + attrs = previous + else: + attrs = [] + while next_attr_char != -1 and text: + if next_attr_char + 1 < len(text): + attr_char = text[next_attr_char+1].lower() + else: + attr_char = str() + if attr_char == 'o': + attrs = [] + elif attr_char == 'u': + attrs.append('u') + elif attr_char == 'b': + attrs.append('b') + if attr_char in string.digits and attr_char != '': + color_str = text[next_attr_char+1:text.find('}', next_attr_char)] + if color_str: + attrs.append(color_str + '}') + text = text[next_attr_char+len(color_str)+2:] + else: + text = text[next_attr_char+2:] + next_attr_char = text.find(FORMAT_CHAR) + return attrs + -- cgit v1.2.3