diff --git a/stable/htmlstrip.py b/stable/htmlstrip.py new file mode 100644 index 0000000..d303a2d --- /dev/null +++ b/stable/htmlstrip.py @@ -0,0 +1,47 @@ +# -*- coding:utf-8 -*- +# vim: set ts=2 sw=2 sts=2 et: +""" +Author: Diego Blanco + +Removes "unwanted" HTML tags from incoming messages and unescapes html. + +Some XMPP clients like Adium or Pidgin send HTML tags like , , , etc +to format text, specially when using OTR. This plugin removes them and also +unescapes HTML like <, >, etc that these clients also tend to escape. +""" + +import re +import prof +import html + +#( regular expressions +re_font = re.compile('| [^>]+>)', re.IGNORECASE) +re_br = re.compile('', re.IGNORECASE) +re_styles = re.compile('', re.IGNORECASE) +re_link = re.compile('| [^>]+>)', re.IGNORECASE) +#) + +def _htmlstrip(message): + """ Cleans message + """ + try: + _message = message + _message = re_styles.sub( '', _message ) + _message = re_font.sub( '', _message ) + _message = re_br.sub( '\n', _message ) + _message = re_link.sub( '', _message ) + + _message = html.unescape( _message ) + except: + return ("ERR@htmlstrip.py: " + message) + finally: + return (_message) + +def prof_pre_chat_message_display(barejid, resource, message): + return _htmlstrip(message) + +def prof_pre_room_message_display(barejid, nick, message): + return _htmlstrip(message) + +def prof_pre_priv_message_display(barejid, nick, message): + return _htmlstrip(message)