Przeglądaj źródła

refactor: dict.update() -like style

pull/337/head
GuGuMur 1 rok temu
rodzic
commit
f822893513
2 zmienionych plików z 14 dodań i 47 usunięć
  1. +8
    -7
      src/mwparserfromhell/nodes/template.py
  2. +6
    -40
      tests/test_template.py

+ 8
- 7
src/mwparserfromhell/nodes/template.py Wyświetl plik

@@ -328,15 +328,16 @@ class Template(Node):
self.params.append(param) self.params.append(param)
return param return param


def update(self, params):
def update(self, params, **kwargs):
"""Update the template with multiple parameters at once. """Update the template with multiple parameters at once.
This method accepts a list of parameter dictionaries, each containing
the same arguments as :meth:`add`. It will process each parameter
in order using the same logic as :meth:`add`.
Args:
params: A dictionary mapping parameter names to values.
**kwargs: Optional arguments that will be applied to all parameters,
matching the same arguments in :meth:`add` (showkey, before,
after, preserve_spacing)
""" """
for param in params:
self.add(**param)
for name, value in params.items():
self.add(name, value, **kwargs)


def __setitem__(self, name, value): def __setitem__(self, name, value):
return self.add(name, value) return self.add(name, value)


+ 6
- 40
tests/test_template.py Wyświetl plik

@@ -397,54 +397,20 @@ def test_add():
def test_update(): def test_update():
"""test template.update()""" """test template.update()"""
node1 = Template(wraptext("a")) node1 = Template(wraptext("a"))
node1.update([{"name": "b", "value": "c"}])
assert "{{a|b=c}}" == node1
node1.update({"b": "c", "d": "e"})
assert "{{a|b=c|d=e}}" == node1


node2 = Template(wraptext("a")) node2 = Template(wraptext("a"))
node2.update([{"name": "1", "value": "b", "showkey": False}])
node2.update({"1": "b"}, showkey=False)
assert "{{a|b}}" == node2 assert "{{a|b}}" == node2


node3 = Template(wraptext("a"), [pgens("b", "c"), pgens("d", "e")])
node3.update([
{"name": "f", "value": "g", "before": "d"},
{"name": "h", "value": "i", "after": "b"}
])
assert "{{a|b=c|h=i|f=g|d=e}}" == node3

node4 = Template(wraptext("a\n"), [
node3 = Template(wraptext("a\n"), [
pgens("b ", "c\n"), pgens("b ", "c\n"),
pgens("d ", " e") pgens("d ", " e")
]) ])
node4.update([{
"name": "e",
"value": "f",
"preserve_spacing": True
}])
assert "{{a\n|b =c\n|d = e|e =f}}" == node4

node5 = Template(wraptext("a"), [pgens("b", "c")])
node5.update([
{
"name": "1",
"value": "e",
"showkey": False,
"before": "b"
},
{
"name": "f",
"value": "g",
"preserve_spacing": False
}
])
assert "{{a|e|b=c|f=g}}" == node5

node6 = Template(wraptext("a"), [pgens("b", "c")])
node6.update([{"name": "b", "value": "d"}])
assert "{{a|b=d}}" == node6
node3.update({"b ": "f"}, preserve_spacing=False)
assert "{{a\n|b =f|d = e}}" == node3


node7 = Template(wraptext("a"), [pgenh("1", "b")])
node7.update([{"name": "1", "value": "c"}])
assert "{{a|c}}" == node7


def test_remove(): def test_remove():
"""test Template.remove()""" """test Template.remove()"""


Ładowanie…
Anuluj
Zapisz