X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=geekigeeki.py;h=788006001301cb9071f6322abb8807787de3f8f2;hb=bcff3d51e279853e511d71bc2459cfae50f34615;hp=d63850fb57b8e55494930871cc8f4f23271b3b5c;hpb=5a2e445da1711b54343334087b760b86935fb876;p=geekigeeki.git diff --git a/geekigeeki.py b/geekigeeki.py index d63850f..7880060 100755 --- a/geekigeeki.py +++ b/geekigeeki.py @@ -107,6 +107,8 @@ def url_args(kvargs): def emit_header(mtime=None, mime_type="text/html"): if mtime: + # Prevent caching when the wiki engine gets updated + mtime = max(mtime, os.stat(__file__).st_mtime) print("Last-Modified: " + strftime("%a, %d %b %Y %H:%M:%S GMT", gmtime(mtime))) if mime_type: print("Content-type: " + mime_type + "; charset=utf-8") @@ -173,7 +175,7 @@ def link_inline(name, descr=None, kvargs={}): def link_inline_glob(pattern, descr=None, kvargs={}): if not url_re.match(pattern) and bool(set(pattern) & set('?*[')): s = '' - for name in glob.glob(pattern): + for name in sorted(glob.glob(pattern), reverse=bool(int(kvargs.get('reverse', '0'))) ): s += link_inline(name, descr, kvargs) return s else: @@ -320,14 +322,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: