summaryrefslogtreecommitdiff
path: root/poezio/windows/funcs.py
diff options
context:
space:
mode:
Diffstat (limited to 'poezio/windows/funcs.py')
-rw-r--r--poezio/windows/funcs.py54
1 files changed, 54 insertions, 0 deletions
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
+