File: clear.py

package info (click to toggle)
python-sybil 9.2.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,148 kB
  • sloc: python: 4,510; makefile: 90
file content (22 lines) | stat: -rw-r--r-- 719 bytes parent folder | download | duplicates (2)
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)