summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data/default_config.cfg10
-rw-r--r--src/xhtml.py21
2 files changed, 21 insertions, 10 deletions
diff --git a/data/default_config.cfg b/data/default_config.cfg
index 42b27cb6..794ea91d 100644
--- a/data/default_config.cfg
+++ b/data/default_config.cfg
@@ -51,6 +51,16 @@ after_completion = ,
# highlighted if said by someone on a room
highlight_on =
+# XHTML-IM is an XMPP extension letting users send messages
+# containing XHTML and CSS formating. We can use this to make
+# colored text for example.
+# It is disabled by default because this is only in an experimental
+# state: you could miss some part of a message (mainly the URL)
+# but you can still send colored messages. You just won’t be able te see
+# the colors, though
+# Set to true if you want to see colored messages
+enable_xhtml_im = false
+
# Set a number for this setting.
# The join OR status-change notices will be
# displayed according to this number.
diff --git a/src/xhtml.py b/src/xhtml.py
index 55582066..a9f0af60 100644
--- a/src/xhtml.py
+++ b/src/xhtml.py
@@ -26,11 +26,11 @@ poezio colors to xhtml code
import re
import subprocess
+from config import config
import logging
log = logging.getLogger(__name__)
-
shell_colors_re = re.compile(r'(\[(?:\d+;)*(?:\d+m))')
start_indent_re = re.compile(r'\[0;30m\[0;37m ')
newline_indent_re = re.compile('\n\[0;37m ')
@@ -41,14 +41,15 @@ def get_body_from_message_stanza(message):
poezio colors if there's an xhtml_im element, or
the body (without any color) otherwise
"""
- xhtml_body = message['xhtml_im']
- if xhtml_body:
- try:
- shell_body = xhtml_code_to_shell_colors(xhtml_body)
- except OSError:
- log.error('html parsing failed')
- else:
- return shell_colors_to_poezio_colors(shell_body)
+ if config.get('enable_xhtml_im', 'false') == 'true':
+ xhtml_body = message['xhtml_im']
+ if xhtml_body:
+ try:
+ shell_body = xhtml_code_to_shell_colors(xhtml_body)
+ except OSError:
+ log.error('html parsing failed')
+ else:
+ return shell_colors_to_poezio_colors(shell_body)
return message['body']
def clean_text(string):
@@ -133,7 +134,7 @@ def shell_colors_to_poezio_colors(string):
elif num == 1:
res += '\x19b'
elif num >= 31 and num <= 37:
- res += '\x19%d' % (num-30,)
+ res += '\x19%d' % ((num-30)%7,)
return res
def remove_elinks_indent(string):
lines = string.split('\n')