From: Bernie Innocenti Date: Sun, 16 May 2010 13:16:23 +0000 (-0400) Subject: Also append page arguments to macro argument list. X-Git-Url: https://codewiz.org/gitweb?a=commitdiff_plain;h=04449aef0693a2753c56a3ac391dde068e87a790;p=geekigeeki.git Also append page arguments to macro argument list. Page arguments with same name will override macro arguments. At this time it's not clear to me whether it would be better the other way around. --- diff --git a/geekigeeki.py b/geekigeeki.py index d63850f..044c7bf 100755 --- a/geekigeeki.py +++ b/geekigeeki.py @@ -320,14 +320,19 @@ class WikiFormatter: def _macro_repl(self, word): try: - args, kvargs = parse_args(word) + args, macro_kvargs = parse_args(word) + # Is this a parameter given to the current page? if args[0] in self.kvargs: return self.kvargs[args[0]] + # Is this an internal macro? macro = globals().get('_macro_' + args[0]) if not macro: + # Can we load (and cache) an external macro? exec(open("sys/macros/" + args[0] + ".py").read(), globals()) macro = globals().get('_macro_' + args[0]) - return macro(*args, **kvargs) + # Invoke macro passing both macro args augmented by page args + macro_kvargs.update(self.kvargs) + return macro(*args, **macro_kvargs) except Exception, e: msg = cgi.escape(word) + ": " + cgi.escape(str(e)) if not self.in_html: