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