| @@ -19,50 +19,58 @@ | |||||
| # SOFTWARE. | # SOFTWARE. | ||||
| from typing import TYPE_CHECKING, Any, Generator, Callable, Optional | |||||
| from ._base import Node | from ._base import Node | ||||
| from ..utils import parse_anything | from ..utils import parse_anything | ||||
| __all__ = ["Heading"] | |||||
| if TYPE_CHECKING: | |||||
| from ..wikicode import Wikicode | |||||
| class Heading(Node): | class Heading(Node): | ||||
| """Represents a section heading in wikicode, like ``== Foo ==``.""" | """Represents a section heading in wikicode, like ``== Foo ==``.""" | ||||
| def __init__(self, title, level): | |||||
| def __init__(self, title: Any, level: int): | |||||
| super().__init__() | super().__init__() | ||||
| self.title = title | self.title = title | ||||
| self.level = level | self.level = level | ||||
| def __str__(self): | |||||
| def __str__(self) -> str: | |||||
| return ("=" * self.level) + str(self.title) + ("=" * self.level) | return ("=" * self.level) + str(self.title) + ("=" * self.level) | ||||
| def __children__(self): | |||||
| def __children__(self) -> Generator["Wikicode", None, None]: | |||||
| yield self.title | yield self.title | ||||
| def __strip__(self, **kwargs): | |||||
| def __strip__(self, **kwargs: Any) -> Optional[str]: | |||||
| return self.title.strip_code(**kwargs) | return self.title.strip_code(**kwargs) | ||||
| def __showtree__(self, write, get, mark): | |||||
| def __showtree__( | |||||
| self, | |||||
| write: Callable[[str], None], | |||||
| get: Callable[["Wikicode"], None], | |||||
| mark: Callable[[], None], | |||||
| ) -> None: | |||||
| write("=" * self.level) | write("=" * self.level) | ||||
| get(self.title) | get(self.title) | ||||
| write("=" * self.level) | write("=" * self.level) | ||||
| @property | @property | ||||
| def title(self): | |||||
| def title(self) -> "Wikicode": | |||||
| """The title of the heading, as a :class:`.Wikicode` object.""" | """The title of the heading, as a :class:`.Wikicode` object.""" | ||||
| return self._title | return self._title | ||||
| @title.setter | |||||
| def title(self, value: Any) -> None: | |||||
| self._title = parse_anything(value) | |||||
| @property | @property | ||||
| def level(self): | |||||
| def level(self) -> int: | |||||
| """The heading level, as an integer between 1 and 6, inclusive.""" | """The heading level, as an integer between 1 and 6, inclusive.""" | ||||
| return self._level | return self._level | ||||
| @title.setter | |||||
| def title(self, value): | |||||
| self._title = parse_anything(value) | |||||
| @level.setter | @level.setter | ||||
| def level(self, value): | |||||
| def level(self, value: int) -> None: | |||||
| value = int(value) | value = int(value) | ||||
| if value < 1 or value > 6: | if value < 1 or value > 6: | ||||
| raise ValueError(value) | raise ValueError(value) | ||||