diff options
author | Lance Stout <lancestout@gmail.com> | 2010-08-03 17:58:18 -0400 |
---|---|---|
committer | Lance Stout <lancestout@gmail.com> | 2010-08-03 17:58:18 -0400 |
commit | 183a3f1b87a8f5a6c4e174dec6de513a0bb5cb83 (patch) | |
tree | 501fed14271b99146bb65ca6dec18438e73d72c4 | |
parent | 18683d2b7559cafc0d102f1facfc05aebfabcdcd (diff) | |
download | slixmpp-183a3f1b87a8f5a6c4e174dec6de513a0bb5cb83.tar.gz slixmpp-183a3f1b87a8f5a6c4e174dec6de513a0bb5cb83.tar.bz2 slixmpp-183a3f1b87a8f5a6c4e174dec6de513a0bb5cb83.tar.xz slixmpp-183a3f1b87a8f5a6c4e174dec6de513a0bb5cb83.zip |
Updated XHTML-IM stanza with documentation and PEP8 style.
-rw-r--r-- | sleekxmpp/stanza/htmlim.py | 97 | ||||
-rw-r--r-- | tests/test_messagestanzas.py | 2 |
2 files changed, 72 insertions, 27 deletions
diff --git a/sleekxmpp/stanza/htmlim.py b/sleekxmpp/stanza/htmlim.py index 50195b11..c2f2f0c8 100644 --- a/sleekxmpp/stanza/htmlim.py +++ b/sleekxmpp/stanza/htmlim.py @@ -5,31 +5,76 @@ See the file LICENSE for copying permission. """ -from .. xmlstream.stanzabase import registerStanzaPlugin, ElementBase, ET + +from sleekxmpp.stanza import Message +from sleekxmpp.xmlstream.stanzabase import registerStanzaPlugin +from sleekxmpp.xmlstream.stanzabase import ElementBase, ET + class HTMLIM(ElementBase): - namespace = 'http://jabber.org/protocol/xhtml-im' - name = 'html' - plugin_attrib = 'html' - interfaces = set(('html',)) - plugin_attrib_map = set() - plugin_xml_map = set() - - def setHtml(self, html): - if isinstance(html, str): - html = ET.XML(html) - if html.tag != '{http://www.w3.org/1999/xhtml}body': - body = ET.Element('{http://www.w3.org/1999/xhtml}body') - body.append(html) - self.xml.append(body) - else: - self.xml.append(html) - - def getHtml(self): - html = self.xml.find('{http://www.w3.org/1999/xhtml}body') - if html is None: return '' - return html - - def delHtml(self): - if self.parent is not None: - self.parent().xml.remove(self.xml) + + """ + XEP-0071: XHTML-IM defines a method for embedding XHTML content + within a <message> stanza so that lightweight markup can be used + to format the message contents and to create links. + + Only a subset of XHTML is recommended for use with XHTML-IM. + See the full spec at 'http://xmpp.org/extensions/xep-0071.html' + for more information. + + Example stanza: + <message to="user@example.com"> + <body>Non-html message content.</body> + <html xmlns="http://jabber.org/protocol/xhtml-im"> + <body xmlns="http://www.w3.org/1999/xhtml"> + <p><b>HTML!</b></p> + </body> + </html> + </message> + + Stanza Interface: + body -- The contents of the HTML body tag. + + Methods: + getBody -- Return the HTML body contents. + setBody -- Set the HTML body contents. + delBody -- Remove the HTML body contents. + """ + + namespace = 'http://jabber.org/protocol/xhtml-im' + name = 'html' + interfaces = set(('body',)) + plugin_attrib = name + + def setBody(self, html): + """ + Set the contents of the HTML body. + + Arguments: + html -- Either a string or XML object. If the top level + element is not <body> with a namespace of + 'http://www.w3.org/1999/xhtml', it will be wrapped. + """ + if isinstance(html, str): + html = ET.XML(html) + if html.tag != '{http://www.w3.org/1999/xhtml}body': + body = ET.Element('{http://www.w3.org/1999/xhtml}body') + body.append(html) + self.xml.append(body) + else: + self.xml.append(html) + + def getBody(self): + """Return the contents of the HTML body.""" + html = self.xml.find('{http://www.w3.org/1999/xhtml}body') + if html is None: + return '' + return html + + def delBody(self): + """Remove the HTML body contents.""" + if self.parent is not None: + self.parent().xml.remove(self.xml) + + +registerStanzaPlugin(Message, HTMLIM) diff --git a/tests/test_messagestanzas.py b/tests/test_messagestanzas.py index f55211db..5e2a667a 100644 --- a/tests/test_messagestanzas.py +++ b/tests/test_messagestanzas.py @@ -32,7 +32,7 @@ class TestMessageStanzas(SleekTest): msg['type'] = 'chat' p = ET.Element('{http://www.w3.org/1999/xhtml}p') p.text = "This is the htmlim message" - msg['html']['html'] = p + msg['html']['body'] = p self.checkMessage(msg, """ <message to="fritzy@netflint.net/sleekxmpp" type="chat"> <body>this is the plaintext message</body> |