# HG changeset patch # User Paul Boddie # Date 1497632787 -7200 # Node ID 1d93ae7fe8edc386dd8d8a5262320cfd439c278b # Parent 90c4ddc8afb6ce21ed369dfe6e1abd41026b8fb1 Introduced support for multiple macro arguments along with some new macros. diff -r 90c4ddc8afb6 -r 1d93ae7fe8ed xmlparser.py --- a/xmlparser.py Fri Jun 16 19:05:37 2017 +0200 +++ b/xmlparser.py Fri Jun 16 19:06:27 2017 +0200 @@ -82,7 +82,7 @@ preformatted_tags = ["pre", "ac:plain-text-body"] single_level_tags = ["strong", "em", "u", "del", "sup", "sub", "code"] -formatted_tags = ["ac:rich-text-body", "table"] +formatted_tags = ["ac:layout", "ac:rich-text-body", "table"] indented_tags = ["li", "p"] + preformatted_tags + formatted_tags block_tags = indented_tags + blocktypes.keys() + list_tags.keys() @@ -122,13 +122,16 @@ macroargs = { # Confluence macro Confluence and MoinMoin macro arguments - "color" : ("color", "col"), + "attachments" : [("page", "pagename")], + "color" : [("color", "col")], } macrotypes = { # Confluence macro MoinMoin syntax "anchor" : "<>", + "attachments" : "<>", "color" : "<>", + "recently-updated" : "<>", "toc" : "<>", } @@ -410,9 +413,17 @@ parameters = {"content" : text} parameters.update(self.macro_parameters[-1]) argnames = macroargs.get(self.macros[-1]) + + # Convert Confluence arguments to Moin arguments. Unlike the + # wiki markup parser, multiple arguments are supported. + if argnames: - confargname, moinargname = argnames - parameters["args"] = quote_macro_argument("%s=%s" % (moinargname, self.macro_parameters[-1][confargname])) + all_args = [] + for confargname, moinargname in argnames: + argvalue = self.macro_parameters[-1].get(confargname) + if argvalue: + all_args.append(quote_macro_argument("%s=%s" % (moinargname, argvalue))) + parameters["args"] = ", ".join(all_args) # Obtain the Moin macro with parameters substituted.