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: