root/galaxy-central/eggs/Mako-0.2.5-py2.6.egg/mako/ext/turbogears.py @ 3

リビジョン 3, 1.8 KB (コミッタ: kohda, 14 年 前)

Install Unix tools  http://hannonlab.cshl.edu/galaxy_unix_tools/galaxy.html

行番号 
1import re, inspect
2from mako.lookup import TemplateLookup
3from mako.template import Template
4
5class TGPlugin(object):
6    """TurboGears compatible Template Plugin."""
7
8    def __init__(self, extra_vars_func=None, options=None, extension='mak'):
9        self.extra_vars_func = extra_vars_func
10        self.extension = extension
11        if not options:
12            options = {}
13
14        # Pull the options out and initialize the lookup
15        lookup_options = {}
16        for k, v in options.iteritems():
17            if k.startswith('mako.'):
18                lookup_options[k[5:]] = v
19            elif k in ['directories', 'filesystem_checks', 'module_directory']:
20                lookup_options[k] = v
21        self.lookup = TemplateLookup(**lookup_options)
22       
23        self.tmpl_options = {}
24        # transfer lookup args to template args, based on those available
25        # in getargspec
26        for kw in inspect.getargspec(Template.__init__)[0]:
27            if kw in lookup_options:
28                self.tmpl_options[kw] = lookup_options[kw]
29
30    def load_template(self, templatename, template_string=None):
31        """Loads a template from a file or a string"""
32        if template_string is not None:
33            return Template(template_string, **self.tmpl_options)
34        # Translate TG dot notation to normal / template path
35        if '/' not in templatename:
36            templatename = '/' + templatename.replace('.', '/') + '.' + self.extension
37
38        # Lookup template
39        return self.lookup.get_template(templatename)
40
41    def render(self, info, format="html", fragment=False, template=None):
42        if isinstance(template, basestring):
43            template = self.load_template(template)
44
45        # Load extra vars func if provided
46        if self.extra_vars_func:
47            info.update(self.extra_vars_func())
48
49        return template.render(**info)
50
Note: リポジトリブラウザについてのヘルプは TracBrowser を参照してください。