X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=geekigeeki.py;h=044c7bfa55600abaebbee95d59a2b307fb1e0bd4;hb=04449aef0693a2753c56a3ac391dde068e87a790;hp=d63850fb57b8e55494930871cc8f4f23271b3b5c;hpb=5a2e445da1711b54343334087b760b86935fb876;p=geekigeeki.git 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: