From 9cd20ba62aa9c8ce0d13e80fc850de0f2ad130a1 Mon Sep 17 00:00:00 2001 From: Sridhar Ratnakumar Date: Thu, 20 Dec 2007 17:39:58 +0530 Subject: [PATCH] marry util.make and util.mako => excellent hack --- util.py | 28 ++++++++++++++++++---------- wrigit.py | 19 ++++++++++--------- 2 files changed, 28 insertions(+), 19 deletions(-) diff --git a/util.py b/util.py index ae0c0e6..15213d2 100644 --- a/util.py +++ b/util.py @@ -1,9 +1,19 @@ -import os +import os, sys from mako.lookup import TemplateLookup from cfg import cfg +def mako(): + templates = TemplateLookup(directories=[cfg['templatedir']]) + def render(name, **namespace): + import cgi + return templates.get_template(name).render( + cgi=cgi, + **namespace) + return render +mako = mako() + # gnu make like functinality def last_modified(filename): return os.stat(filename).st_mtime @@ -16,12 +26,10 @@ def make(target, deps, content_generator, *args, **kwargs): content = content_generator(*args, **kwargs) open(target, 'w').write(content) -def mako(): - templates = TemplateLookup(directories=[cfg['templatedir']]) - def render(name, **namespace): - import cgi - return templates.get_template(name).render( - cgi=cgi, - **namespace) - return render -mako = mako() +def make_mako(target, deps, name): + """ + Wrapper around make/mako. Introduces mako files itself as one of deps + """ + templatefile = os.path.join(cfg['templatedir'], name) + parent_locals = sys._getframe(1).f_locals + return make(target, deps+[templatefile], mako, name, **parent_locals) diff --git a/wrigit.py b/wrigit.py index fd56997..728262f 100755 --- a/wrigit.py +++ b/wrigit.py @@ -31,7 +31,7 @@ cfg = setup_cfg([ cfg['rstdir'] = abspath(cfg['rstdir']) cfg['templatedir'] = abspath(cfg['templatedir']) -from util import make, mako +from util import make_mako class Page(object): """A rst page""" @@ -106,19 +106,20 @@ if __name__ == '__main__': else: page = Page(f) - make(rst.htmlpath(f), [f], - mako, 'page.mako', **locals()) + make_mako(rst.htmlpath(f), + [f], + 'page.mako') blog_posts.sort() blog_posts.reverse() # generate blog index - make(join(rstdir, 'blog', 'index.html'), - [p.rstfile for p in blog_posts], - mako, 'blog/index.mako', **locals()) + make_mako(join(rstdir, 'blog', 'index.html'), + [p.rstfile for p in blog_posts], + 'blog/index.mako') # generate blog feed recent_blog_posts = blog_posts[:10] - make(join(rstdir, 'blog', 'atom.xml'), - [p.rstfile for p in recent_blog_posts], - mako, 'blog/atom.xml.mako', **locals()) + make_mako(join(rstdir, 'blog', 'atom.xml'), + [p.rstfile for p in recent_blog_posts], + 'blog/atom.xml.mako') -- 2.11.4.GIT