MCPcopy Index your code
hub / github.com/python/cpython / FilterVisibilityController

Class FilterVisibilityController

Lib/xml/dom/expatbuilder.py:453–508  ·  view source on GitHub ↗

Wrapper around a DOMBuilderFilter which implements the checks to make the whatToShow filter attribute work.

Source from the content-addressed store, hash-verified

451_ALLOWED_FILTER_RETURNS = (FILTER_ACCEPT, FILTER_REJECT, FILTER_SKIP)
452
453class FilterVisibilityController(object):
454 """Wrapper around a DOMBuilderFilter which implements the checks
455 to make the whatToShow filter attribute work."""
456
457 __slots__ = 'filter',
458
459 def __init__(self, filter):
460 self.filter = filter
461
462 def startContainer(self, node):
463 mask = self._nodetype_mask[node.nodeType]
464 if self.filter.whatToShow & mask:
465 val = self.filter.startContainer(node)
466 if val == FILTER_INTERRUPT:
467 raise ParseEscape
468 if val not in _ALLOWED_FILTER_RETURNS:
469 raise ValueError(
470 "startContainer() returned illegal value: " + repr(val))
471 return val
472 else:
473 return FILTER_ACCEPT
474
475 def acceptNode(self, node):
476 mask = self._nodetype_mask[node.nodeType]
477 if self.filter.whatToShow & mask:
478 val = self.filter.acceptNode(node)
479 if val == FILTER_INTERRUPT:
480 raise ParseEscape
481 if val == FILTER_SKIP:
482 # move all child nodes to the parent, and remove this node
483 parent = node.parentNode
484 for child in node.childNodes[:]:
485 parent.appendChild(child)
486 # node is handled by the caller
487 return FILTER_REJECT
488 if val not in _ALLOWED_FILTER_RETURNS:
489 raise ValueError(
490 "acceptNode() returned illegal value: " + repr(val))
491 return val
492 else:
493 return FILTER_ACCEPT
494
495 _nodetype_mask = {
496 Node.ELEMENT_NODE: NodeFilter.SHOW_ELEMENT,
497 Node.ATTRIBUTE_NODE: NodeFilter.SHOW_ATTRIBUTE,
498 Node.TEXT_NODE: NodeFilter.SHOW_TEXT,
499 Node.CDATA_SECTION_NODE: NodeFilter.SHOW_CDATA_SECTION,
500 Node.ENTITY_REFERENCE_NODE: NodeFilter.SHOW_ENTITY_REFERENCE,
501 Node.ENTITY_NODE: NodeFilter.SHOW_ENTITY,
502 Node.PROCESSING_INSTRUCTION_NODE: NodeFilter.SHOW_PROCESSING_INSTRUCTION,
503 Node.COMMENT_NODE: NodeFilter.SHOW_COMMENT,
504 Node.DOCUMENT_NODE: NodeFilter.SHOW_DOCUMENT,
505 Node.DOCUMENT_TYPE_NODE: NodeFilter.SHOW_DOCUMENT_TYPE,
506 Node.DOCUMENT_FRAGMENT_NODE: NodeFilter.SHOW_DOCUMENT_FRAGMENT,
507 Node.NOTATION_NODE: NodeFilter.SHOW_NOTATION,
508 }
509
510

Callers 1

__init__Method · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…