1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
from collections.abc import Iterable, Sequence
from sybil import Document, Region, Example
from sybil.parsers.abstract.lexers import LexerCollection
from sybil.typing import Lexer
class AbstractClearNamespaceParser:
"""
An abstract parser for clearing the :class:`~sybil.Document.namespace`.
"""
def __init__(self, lexers: Sequence[Lexer]) -> None:
self.lexers = LexerCollection(lexers)
@staticmethod
def evaluate(example: Example) -> None:
example.document.namespace.clear()
def __call__(self, document: Document) -> Iterable[Region]:
for lexed in self.lexers(document):
yield Region(lexed.start, lexed.end, lexed.lexemes['source'], self.evaluate)
|