| 521 | parser.EndElementHandler = self.end_element_handler |
| 522 | |
| 523 | class Rejecter(FilterCrutch): |
| 524 | __slots__ = () |
| 525 | |
| 526 | def __init__(self, builder): |
| 527 | FilterCrutch.__init__(self, builder) |
| 528 | parser = builder._parser |
| 529 | for name in ("ProcessingInstructionHandler", |
| 530 | "CommentHandler", |
| 531 | "CharacterDataHandler", |
| 532 | "StartCdataSectionHandler", |
| 533 | "EndCdataSectionHandler", |
| 534 | "ExternalEntityRefHandler", |
| 535 | ): |
| 536 | setattr(parser, name, None) |
| 537 | |
| 538 | def start_element_handler(self, *args): |
| 539 | self._level = self._level + 1 |
| 540 | |
| 541 | def end_element_handler(self, *args): |
| 542 | if self._level == 0: |
| 543 | # restore the old handlers |
| 544 | parser = self._builder._parser |
| 545 | self._builder.install(parser) |
| 546 | parser.StartElementHandler = self._old_start |
| 547 | parser.EndElementHandler = self._old_end |
| 548 | else: |
| 549 | self._level = self._level - 1 |
| 550 | |
| 551 | class Skipper(FilterCrutch): |
| 552 | __slots__ = () |
no outgoing calls
no test coverage detected
searching dependent graphs…