Explorar el Código

Add type hints: mwparserfromhell.nodes.external_link

pull/338/head
Jakub Klinkovský hace 1 año
padre
commit
f1fb1b6d2c
Se han modificado 1 ficheros con 35 adiciones y 19 borrados
  1. +35
    -19
      src/mwparserfromhell/nodes/external_link.py

+ 35
- 19
src/mwparserfromhell/nodes/external_link.py Ver fichero

@@ -19,23 +19,34 @@
# 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__ = ["ExternalLink"]


class ExternalLink(Node):
"""Represents an external link, like ``[http://example.com/ Example]``."""

def __init__(self, url, title=None, brackets=True, suppress_space=False):
def __init__(
self,
url: Any,
title: Any = None,
brackets: bool = True,
suppress_space: bool = False,
):
super().__init__()
self.url = url
self.title = title
self.brackets = brackets
self.suppress_space = suppress_space

def __str__(self):
def __str__(self) -> str:
if self.brackets:
if self.title is not None:
if self.suppress_space is True:
@@ -44,19 +55,24 @@ class ExternalLink(Node):
return "[" + str(self.url) + "]"
return str(self.url)

def __children__(self):
def __children__(self) -> Generator["Wikicode"]:
yield self.url
if self.title is not None:
yield self.title

def __strip__(self, **kwargs):
def __strip__(self, **kwargs: Any) -> Optional[str]:
if self.brackets:
if self.title:
return self.title.strip_code(**kwargs)
return None
return self.url.strip_code(**kwargs)

def __showtree__(self, write, get, mark):
def __showtree__(
self,
write: Callable[[str], None],
get: Callable[["Wikicode"], None],
mark: Callable[[], None],
) -> None:
if self.brackets:
write("[")
get(self.url)
@@ -66,31 +82,31 @@ class ExternalLink(Node):
write("]")

@property
def url(self):
def url(self) -> "Wikicode":
"""The URL of the link target, as a :class:`.Wikicode` object."""
return self._url

@property
def title(self):
"""The link title (if given), as a :class:`.Wikicode` object."""
return self._title

@property
def brackets(self):
"""Whether to enclose the URL in brackets or display it straight."""
return self._brackets

@url.setter
def url(self, value):
def url(self, value: Any) -> None:
# pylint: disable=import-outside-toplevel
from ..parser import contexts

self._url = parse_anything(value, contexts.EXT_LINK_URI)

@property
def title(self) -> Optional["Wikicode"]:
"""The link title (if given), as a :class:`.Wikicode` object."""
return self._title

@title.setter
def title(self, value):
def title(self, value: Any) -> None:
self._title = None if value is None else parse_anything(value)

@property
def brackets(self) -> bool:
"""Whether to enclose the URL in brackets or display it straight."""
return self._brackets

@brackets.setter
def brackets(self, value):
def brackets(self, value: bool) -> None:
self._brackets = bool(value)

Cargando…
Cancelar
Guardar