| @@ -19,37 +19,47 @@ | |||
| # SOFTWARE. | |||
| from typing import TYPE_CHECKING, Any, Generator, Optional, Callable | |||
| from ._base import Node | |||
| from ..utils import parse_anything | |||
| if TYPE_CHECKING: | |||
| from ..wikicode import Wikicode | |||
| __all__ = ["Argument"] | |||
| class Argument(Node): | |||
| """Represents a template argument substitution, like ``{{{foo}}}``.""" | |||
| def __init__(self, name, default=None): | |||
| def __init__(self, name: Any, default: Any = None): | |||
| super().__init__() | |||
| self.name = name | |||
| self.default = default | |||
| def __str__(self): | |||
| def __str__(self) -> str: | |||
| start = "{{{" + str(self.name) | |||
| if self.default is not None: | |||
| return start + "|" + str(self.default) + "}}}" | |||
| return start + "}}}" | |||
| def __children__(self): | |||
| def __children__(self) -> Generator["Wikicode"]: | |||
| yield self.name | |||
| if self.default is not None: | |||
| yield self.default | |||
| def __strip__(self, **kwargs): | |||
| def __strip__(self, **kwargs: Any) -> Optional[str]: | |||
| if self.default is not None: | |||
| return self.default.strip_code(**kwargs) | |||
| return None | |||
| def __showtree__(self, write, get, mark): | |||
| def __showtree__( | |||
| self, | |||
| write: Callable[[str], None], | |||
| get: Callable[["Wikicode"], None], | |||
| mark: Callable[[], None], | |||
| ) -> None: | |||
| write("{{{") | |||
| get(self.name) | |||
| if self.default is not None: | |||
| @@ -59,12 +69,16 @@ class Argument(Node): | |||
| write("}}}") | |||
| @property | |||
| def name(self): | |||
| def name(self) -> "Wikicode": | |||
| """The name of the argument to substitute.""" | |||
| return self._name | |||
| @name.setter | |||
| def name(self, value: Any) -> None: | |||
| self._name = parse_anything(value) | |||
| @property | |||
| def default(self): | |||
| def default(self) -> Optional["Wikicode"]: | |||
| """The default value to substitute if none is passed. | |||
| This will be ``None`` if the argument wasn't defined with one. The | |||
| @@ -74,12 +88,8 @@ class Argument(Node): | |||
| """ | |||
| return self._default | |||
| @name.setter | |||
| def name(self, value): | |||
| self._name = parse_anything(value) | |||
| @default.setter | |||
| def default(self, default): | |||
| def default(self, default: Any) -> None: | |||
| if default is None: | |||
| self._default = None | |||
| else: | |||