--- a/buildframework/helium/external/python/lib/2.5/Sphinx-0.5.1-py2.5.egg/sphinx/_jinja.py Wed Oct 28 14:39:48 2009 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,113 +0,0 @@
-# -*- coding: utf-8 -*-
-"""
- sphinx._jinja
- ~~~~~~~~~~~~~
-
- Jinja glue.
-
- :copyright: 2007-2008 by Georg Brandl, Horst Gutmann.
- :license: BSD.
-"""
-
-import codecs
-from os import path
-
-from sphinx.util import mtimes_of_files
-from sphinx.application import TemplateBridge
-
-from jinja import Environment
-from jinja.loaders import BaseLoader
-from jinja.exceptions import TemplateNotFound
-
-
-def babel_extract(fileobj, keywords, comment_tags, options):
- """
- Simple extractor to get some basic Babel support.
- """
- env = Environment()
- for lineno, sg, pl in env.get_translations_for_string(fileobj.read()):
- yield lineno, None, (sg, pl), ''
-
-
-class SphinxFileSystemLoader(BaseLoader):
- """
- A loader that loads templates either relative to one of a list of given
- paths, or from an absolute path.
- """
-
- def __init__(self, basepath, extpaths):
- self.basepath = path.abspath(basepath)
- self.extpaths = map(path.abspath, extpaths)
- self.searchpaths = self.extpaths + [self.basepath]
-
- def get_source(self, environment, name, parent):
- name = name.replace('/', path.sep)
- if name.startswith('!'):
- name = name[1:]
- if not path.exists(path.join(self.basepath, name)):
- raise TemplateNotFound(name)
- filename = path.join(self.basepath, name)
- elif path.isabs(name):
- if not path.exists(name):
- raise TemplateNotFound(name)
- filename = name
- else:
- for searchpath in self.searchpaths:
- if path.exists(path.join(searchpath, name)):
- filename = path.join(searchpath, name)
- break
- else:
- raise TemplateNotFound(name)
- f = codecs.open(filename, 'r', environment.template_charset)
- try:
- return f.read()
- finally:
- f.close()
-
-
-class TranslatorEnvironment(Environment):
- class _Translator(object):
- def __init__(self, translator):
- self.trans = translator
-
- def gettext(self, string):
- return self.trans.ugettext(string)
-
- def ngettext(self, singular, plural, n):
- return self.trans.ungettext(singular, plural, n)
-
- def __init__(self, *args, **kwargs):
- self.translator = kwargs['translator']
- del kwargs['translator']
- super(TranslatorEnvironment, self).__init__(*args, **kwargs)
-
- def get_translator(self, context):
- return TranslatorEnvironment._Translator(self.translator)
-
-
-class BuiltinTemplates(TemplateBridge):
- def init(self, builder):
- self.templates = {}
- base_templates_path = path.join(path.dirname(__file__), 'templates')
- ext_templates_path = [path.join(builder.confdir, dir)
- for dir in builder.config.templates_path]
- self.templates_path = [base_templates_path] + ext_templates_path
- loader = SphinxFileSystemLoader(base_templates_path, ext_templates_path)
- if builder.translator is not None:
- self.jinja_env = TranslatorEnvironment(loader=loader,
- friendly_traceback=False, translator=builder.translator)
- else:
- self.jinja_env = Environment(loader=loader,
- # disable traceback, more likely that something
- # in the application is broken than in the templates
- friendly_traceback=False)
-
- def newest_template_mtime(self):
- return max(mtimes_of_files(self.templates_path, '.html'))
-
- def render(self, template, context):
- if template in self.templates:
- return self.templates[template].render(context)
- templateobj = self.templates[template] = \
- self.jinja_env.get_template(template)
- return templateobj.render(context)