#
import re
+import logging
RE_COLOR_ATTRS = r'[*!/_|]*'
RE_COLOR_STD = r'(?:%s\d{2})' % RE_COLOR_ATTRS
('white', 0))
+log = logging.getLogger(__name__)
+
+
class Color():
def __init__(self, color_options, debug=False):
self.color_options = color_options
index = int(color)
return '\x01(Fr%s)' % self.color_options[index]
except: # noqa: E722
- print('Error decoding WeeChat color "%s"' % color)
+ log.debug('Error decoding WeeChat color "%s"' % color)
return ''
def _convert_terminal_color(self, fg_bg, attrs, color):
index = int(color)
return '\x01(%s%s#%s)' % (fg_bg, attrs, self._rgb_color(index))
except: # noqa: E722
- print('Error decoding terminal color "%s"' % color)
+ log.debug('Error decoding terminal color "%s"' % color)
return ''
def _convert_color_attr(self, fg_bg, color):
return self._convert_terminal_color(fg_bg, attrs,
WEECHAT_BASIC_COLORS[index][1])
except: # noqa: E722
- print('Error decoding color "%s"' % color)
+ log.debug('Error decoding color "%s"' % color)
return ''
def _attrcode_to_char(self, code):
if len(self.data) < 3:
self.data = ''
return ''
- objtype = bytes(self.data[0:3])
+ objtype = self.data[0:3].decode()
self.data = self.data[3:]
return objtype
def _obj_str(self):
"""Read a string in data (length on 4 bytes + content)."""
value = self._obj_len_data(4)
- if value is None:
- return None
- try:
- return value.decode()
- except AttributeError:
- return value
+ if value in ("", None):
+ return ""
+ return value.decode()
def _obj_buffer(self):
"""Read a buffer in data (length on 4 bytes + data)."""
Read a hashtable in data
(type for keys + type for values + count + items).
"""
- type_keys = self._obj_type().decode()
- type_values = self._obj_type().decode()
+ type_keys = self._obj_type()
+ type_values = self._obj_type()
count = self._obj_int()
hashtable = WeechatDict()
for _ in range(count):
keys_types = []
dict_keys = WeechatDict()
for key in list_keys:
- items = list(item for item in key.split(':'))
+ items = key.split(':')
keys_types.append(items)
dict_keys[items[0]] = items[1]
items = []
for _ in enumerate(list_path):
pointers.append(self._obj_ptr())
for key, objtype in keys_types:
- objtype = objtype
item[key] = self._obj_cb[objtype]()
item['__path'] = pointers
items.append(item)
def _obj_array(self):
"""Read an array of values in data."""
- type_values = self._obj_type().decode()
+ type_values = self._obj_type()
count_values = self._obj_int()
values = []
for _ in range(count_values):
# read objects
objects = WeechatObjects(separator=separator)
while len(self.data) > 0:
- objtype = self._obj_type().decode()
+ objtype = self._obj_type()
value = self._obj_cb[objtype]()
objects.append(WeechatObject(objtype, value, separator=separator))
return WeechatMessage(size, size_uncompressed, compression,