Source code for wikitextparser._parameter

from typing import List, Optional, Tuple

from ._wikitext import WS, SubWikiText


[docs] class Parameter(SubWikiText): __slots__ = () @property def name(self) -> str: """Current parameter's name. getter: Return current parameter's name. setter: set a new name for the current parameter. """ pipe = self._shadow.find(124) if pipe == -1: return self(3, -3) return self(3, pipe) @name.setter def name(self, newname: str) -> None: pipe = self._shadow.find(124) if pipe == -1: self[3:-3] = newname return self[3:pipe] = newname @property def pipe(self) -> str: """Return `|` if there is a pipe (default value) in the Parameter. Return '' otherwise. """ return '|' if self._shadow.find(124) != -1 else '' @property def default(self) -> Optional[str]: """The default value of current parameter. getter: Return None if there is no default. setter: Set a new default value. deleter: Delete the default value, including the pipe character. """ pipe = self._shadow.find(124) if pipe == -1: return None return self(pipe + 1, -3) @default.setter def default(self, newdefault: str) -> None: pipe = self._shadow.find(124) if pipe == -1: self.insert(-3, '|' + newdefault) return self[pipe + 1 : -3] = newdefault @default.deleter def default(self) -> None: pipe = self._shadow.find(124) if pipe == -1: return del self[pipe:-3]
[docs] def append_default(self, new_default_name: str) -> None: """Append a new default parameter in the appropriate place. Add the new default to the innter-most parameter. If the parameter already exists among defaults, don't change anything. Example: >>> p = Parameter('{{{p1|{{{p2|}}}}}}') >>> p.append_default('p3') >>> p Parameter("'{{{p1|{{{p2|{{{p3|}}}}}}}}}'") """ stripped_default_name = new_default_name.strip(WS) if stripped_default_name == self.name.strip(WS): return dig = True innermost_param = self while dig: dig = False default = innermost_param.default for p in innermost_param.parameters: if p.string == default: if stripped_default_name == p.name.strip(WS): return innermost_param = p dig = True innermost_default = innermost_param.default if innermost_default is None: innermost_param.insert(-3, '|{{{' + new_default_name + '}}}') else: name = innermost_param.name innermost_param[ len('{{{' + name + '|') : len( '{{{' + name + '|' + innermost_default ) ] = '{{{' + new_default_name + '|' + innermost_default + '}}}'
@property def parameters(self) -> List['Parameter']: return super().parameters[1:] @property def _content_span(self) -> Tuple[int, int]: return 3, -3