From 8a0616b3e0c9b5b79ce9418a2494303b28863b4b Mon Sep 17 00:00:00 2001 From: Lance Stout Date: Thu, 19 Aug 2010 20:41:26 -0400 Subject: Updated ElementBase methods _getAttr, _setAttr, and _delAttr with docs and tests. --- sleekxmpp/xmlstream/stanzabase.py | 59 ++++++++++++++++++++++++++++++--------- 1 file changed, 46 insertions(+), 13 deletions(-) (limited to 'sleekxmpp') diff --git a/sleekxmpp/xmlstream/stanzabase.py b/sleekxmpp/xmlstream/stanzabase.py index dfa37368..3223901a 100644 --- a/sleekxmpp/xmlstream/stanzabase.py +++ b/sleekxmpp/xmlstream/stanzabase.py @@ -293,6 +293,9 @@ class ElementBase(object): 3. Delete top level XML attribute named foo. 4. Remove the foo plugin, if it was loaded. 5. Do nothing. + + Arguments: + attrib -- The name of the affected stanza interface. """ if attrib in self.interfaces: del_method = "del%s" % attrib.title() @@ -308,6 +311,49 @@ class ElementBase(object): del self.plugins[attrib] return self + def _setAttr(self, name, value): + """ + Set the value of a top level attribute of the underlying XML object. + + If the new value is None or an empty string, then the attribute will + be removed. + + Arguments: + name -- The name of the attribute. + value -- The new value of the attribute, or None or '' to + remove it. + """ + if value is None or value == '': + self.__delitem__(name) + else: + self.xml.attrib[name] = value + + def _delAttr(self, name): + """ + Remove a top level attribute of the underlying XML object. + + Arguments: + name -- The name of the attribute. + """ + if name in self.xml.attrib: + del self.xml.attrib[name] + + def _getAttr(self, name, default=''): + """ + Return the value of a top level attribute of the underlying + XML object. + + In case the attribute has not been set, a default value can be + returned instead. An empty string is returned if no other default + is supplied. + + Arguments: + name -- The name of the attribute. + default -- Optional value to return if the attribute has not + been set. An empty string is returned otherwise. + """ + return self.xml.attrib.get(name, default) + @property def attrib(self): #backwards compatibility return self @@ -400,19 +446,6 @@ class ElementBase(object): return False return True - def _setAttr(self, name, value): - if value is None or value == '': - self.__delitem__(name) - else: - self.xml.attrib[name] = value - - def _delAttr(self, name): - if name in self.xml.attrib: - del self.xml.attrib[name] - - def _getAttr(self, name, default=''): - return self.xml.attrib.get(name, default) - def _getSubText(self, name): if '}' not in name: name = "{%s}%s" % (self.namespace, name) -- cgit v1.2.3