diff --git a/src/mwparserfromhell/nodes/template.py b/src/mwparserfromhell/nodes/template.py index 612d065..e3abe79 100644 --- a/src/mwparserfromhell/nodes/template.py +++ b/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) diff --git a/tests/test_template.py b/tests/test_template.py index aa3a664..475a468 100644 --- a/tests/test_template.py +++ b/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()"""