From 04449aef0693a2753c56a3ac391dde068e87a790 Mon Sep 17 00:00:00 2001 From: Bernie Innocenti Date: Sun, 16 May 2010 09:16:23 -0400 Subject: [PATCH] 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. --- geekigeeki.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) 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: -- 2.25.1