projects
/
geekigeeki.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Also append page arguments to macro argument list.
[geekigeeki.git]
/
geekigeeki.py
diff --git
a/geekigeeki.py
b/geekigeeki.py
index d63850fb57b8e55494930871cc8f4f23271b3b5c..044c7bfa55600abaebbee95d59a2b307fb1e0bd4 100755
(executable)
--- a/
geekigeeki.py
+++ b/
geekigeeki.py
@@
-320,14
+320,19
@@
class WikiFormatter:
def _macro_repl(self, word):
try:
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]]
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:
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])
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:
except Exception, e:
msg = cgi.escape(word) + ": " + cgi.escape(str(e))
if not self.in_html: