Преглед на файлове

refactor: dict.update() -like style

pull/337/head
GuGuMur преди 1 година
родител
ревизия
f822893513
променени са 2 файла, в които са добавени 14 реда и са изтрити 47 реда
  1. +8
    -7
      src/mwparserfromhell/nodes/template.py
  2. +6
    -40
      tests/test_template.py

+ 8
- 7
src/mwparserfromhell/nodes/template.py Целия файл

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

def update(self, params):
def update(self, params, **kwargs):
"""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):
return self.add(name, value)


+ 6
- 40
tests/test_template.py Целия файл

@@ -397,54 +397,20 @@ def test_add():
def test_update():
"""test template.update()"""
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.update([{"name": "1", "value": "b", "showkey": False}])
node2.update({"1": "b"}, showkey=False)
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("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():
"""test Template.remove()"""


Зареждане…
Отказ
Запис