Remove unused portions of XMLMask
This commit is contained in:
		@@ -14,12 +14,6 @@ from sleekxmpp.xmlstream.stanzabase import ET
 | 
			
		||||
from sleekxmpp.xmlstream.matcher.base import MatcherBase
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Flag indicating if the builtin XPath matcher should be used, which
 | 
			
		||||
# uses namespaces, or a custom matcher that ignores namespaces.
 | 
			
		||||
# Changing this will affect ALL XMLMask matchers.
 | 
			
		||||
IGNORE_NS = False
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
log = logging.getLogger(__name__)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -39,10 +33,6 @@ class MatchXMLMask(MatcherBase):
 | 
			
		||||
    :class:`~sleekxmpp.xmlstream.matcher.stanzapath.StanzaPath`
 | 
			
		||||
    should be used instead.
 | 
			
		||||
 | 
			
		||||
    The use of namespaces in the mask comparison is controlled by
 | 
			
		||||
    ``IGNORE_NS``. Setting ``IGNORE_NS`` to ``True`` will disable namespace
 | 
			
		||||
    based matching for ALL XMLMask matchers.
 | 
			
		||||
 | 
			
		||||
    :param criteria: Either an :class:`~xml.etree.ElementTree.Element` XML
 | 
			
		||||
                     object or XML string to use as a mask.
 | 
			
		||||
    """
 | 
			
		||||
@@ -84,8 +74,6 @@ class MatchXMLMask(MatcherBase):
 | 
			
		||||
                     do not have a specified namespace.
 | 
			
		||||
                     Defaults to ``"__no_ns__"``.
 | 
			
		||||
        """
 | 
			
		||||
        use_ns = not IGNORE_NS
 | 
			
		||||
 | 
			
		||||
        if source is None:
 | 
			
		||||
            # If the element was not found. May happend during recursive calls.
 | 
			
		||||
            return False
 | 
			
		||||
@@ -96,17 +84,10 @@ class MatchXMLMask(MatcherBase):
 | 
			
		||||
                mask = ET.fromstring(mask)
 | 
			
		||||
            except ExpatError:
 | 
			
		||||
                log.warning("Expat error: %s\nIn parsing: %s", '', mask)
 | 
			
		||||
        if not use_ns:
 | 
			
		||||
            # Compare the element without using namespaces.
 | 
			
		||||
            source_tag = source.tag.split('}', 1)[-1]
 | 
			
		||||
            mask_tag = mask.tag.split('}', 1)[-1]
 | 
			
		||||
            if source_tag != mask_tag:
 | 
			
		||||
                return False
 | 
			
		||||
        else:
 | 
			
		||||
            # Compare the element using namespaces
 | 
			
		||||
            mask_ns_tag = "{%s}%s" % (self.default_ns, mask.tag)
 | 
			
		||||
            if source.tag not in [mask.tag, mask_ns_tag]:
 | 
			
		||||
                return False
 | 
			
		||||
 | 
			
		||||
        mask_ns_tag = "{%s}%s" % (self.default_ns, mask.tag)
 | 
			
		||||
        if source.tag not in [mask.tag, mask_ns_tag]:
 | 
			
		||||
            return False
 | 
			
		||||
 | 
			
		||||
        # If the mask includes text, compare it.
 | 
			
		||||
        if mask.text and source.text and \
 | 
			
		||||
@@ -122,37 +103,15 @@ class MatchXMLMask(MatcherBase):
 | 
			
		||||
        # Recursively check subelements.
 | 
			
		||||
        matched_elements = {}
 | 
			
		||||
        for subelement in mask:
 | 
			
		||||
            if use_ns:
 | 
			
		||||
                matched = False
 | 
			
		||||
                for other in source.findall(subelement.tag):
 | 
			
		||||
                    matched_elements[other] = False
 | 
			
		||||
                    if self._mask_cmp(other, subelement, use_ns):
 | 
			
		||||
                        if not matched_elements.get(other, False):
 | 
			
		||||
                            matched_elements[other] = True
 | 
			
		||||
                            matched = True
 | 
			
		||||
                if not matched:
 | 
			
		||||
                    return False
 | 
			
		||||
            else:
 | 
			
		||||
                if not self._mask_cmp(self._get_child(source, subelement.tag),
 | 
			
		||||
                                      subelement, use_ns):
 | 
			
		||||
                    return False
 | 
			
		||||
            matched = False
 | 
			
		||||
            for other in source.findall(subelement.tag):
 | 
			
		||||
                matched_elements[other] = False
 | 
			
		||||
                if self._mask_cmp(other, subelement, use_ns):
 | 
			
		||||
                    if not matched_elements.get(other, False):
 | 
			
		||||
                        matched_elements[other] = True
 | 
			
		||||
                        matched = True
 | 
			
		||||
            if not matched:
 | 
			
		||||
                return False
 | 
			
		||||
 | 
			
		||||
        # Everything matches.
 | 
			
		||||
        return True
 | 
			
		||||
 | 
			
		||||
    def _get_child(self, xml, tag):
 | 
			
		||||
        """Return a child element given its tag, ignoring namespace values.
 | 
			
		||||
 | 
			
		||||
        Returns ``None`` if the child was not found.
 | 
			
		||||
 | 
			
		||||
        :param xml: The :class:`~xml.etree.ElementTree.Element` XML object
 | 
			
		||||
                    to search for the given child tag.
 | 
			
		||||
        :param tag: The name of the subelement to find.
 | 
			
		||||
        """
 | 
			
		||||
        tag = tag.split('}')[-1]
 | 
			
		||||
        try:
 | 
			
		||||
            children = [c.tag.split('}')[-1] for c in xml]
 | 
			
		||||
            index = children.index(tag)
 | 
			
		||||
        except ValueError:
 | 
			
		||||
            return None
 | 
			
		||||
        return list(xml)[index]
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user