| @@ -19,36 +19,46 @@ | |||
| # SOFTWARE. | |||
| from typing import TYPE_CHECKING, Any, Optional, Generator, Callable | |||
| from ._base import Node | |||
| from ..utils import parse_anything | |||
| if TYPE_CHECKING: | |||
| from ..wikicode import Wikicode | |||
| __all__ = ["Wikilink"] | |||
| class Wikilink(Node): | |||
| """Represents an internal wikilink, like ``[[Foo|Bar]]``.""" | |||
| def __init__(self, title, text=None): | |||
| def __init__(self, title: Any, text: Any = None): | |||
| super().__init__() | |||
| self.title = title | |||
| self.text = text | |||
| def __str__(self): | |||
| def __str__(self) -> str: | |||
| if self.text is not None: | |||
| return "[[" + str(self.title) + "|" + str(self.text) + "]]" | |||
| return "[[" + str(self.title) + "]]" | |||
| def __children__(self): | |||
| def __children__(self) -> Generator["Wikicode", None, None]: | |||
| yield self.title | |||
| if self.text is not None: | |||
| yield self.text | |||
| def __strip__(self, **kwargs): | |||
| def __strip__(self, **kwargs: Any) -> Optional[str]: | |||
| if self.text is not None: | |||
| return self.text.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("[[") | |||
| get(self.title) | |||
| if self.text is not None: | |||
| @@ -58,21 +68,21 @@ class Wikilink(Node): | |||
| write("]]") | |||
| @property | |||
| def title(self): | |||
| def title(self) -> "Wikicode": | |||
| """The title of the linked page, as a :class:`.Wikicode` object.""" | |||
| return self._title | |||
| @title.setter | |||
| def title(self, value: Any) -> None: | |||
| self._title = parse_anything(value) | |||
| @property | |||
| def text(self): | |||
| def text(self) -> Optional["Wikicode"]: | |||
| """The text to display (if any), as a :class:`.Wikicode` object.""" | |||
| return self._text | |||
| @title.setter | |||
| def title(self, value): | |||
| self._title = parse_anything(value) | |||
| @text.setter | |||
| def text(self, value): | |||
| def text(self, value: Any) -> None: | |||
| if value is None: | |||
| self._text = None | |||
| else: | |||