| Index: mojo/public/tools/bindings/pylib/mojom/generate/template_expander.py
|
| diff --git a/mojo/public/tools/bindings/pylib/mojom/generate/template_expander.py b/mojo/public/tools/bindings/pylib/mojom/generate/template_expander.py
|
| index 3801d43d9098509f579eb53867106b5df5dec925..9ea6cf8e1feb14c15b7e1de9d207178e873edb7e 100644
|
| --- a/mojo/public/tools/bindings/pylib/mojom/generate/template_expander.py
|
| +++ b/mojo/public/tools/bindings/pylib/mojom/generate/template_expander.py
|
| @@ -6,7 +6,6 @@
|
| # http://src.chromium.org/viewvc/blink/trunk/Source/build/scripts/template_expander.py
|
|
|
| import imp
|
| -import inspect
|
| import os.path
|
| import sys
|
|
|
| @@ -30,30 +29,40 @@ except ImportError:
|
| import jinja2
|
|
|
|
|
| -def ApplyTemplate(mojo_generator, base_dir, path_to_template, params,
|
| - filters=None, **kwargs):
|
| - template_directory, template_name = os.path.split(path_to_template)
|
| - path_to_templates = os.path.join(base_dir, template_directory)
|
| - loader = jinja2.FileSystemLoader([path_to_templates])
|
| +def ApplyTemplate(mojo_generator, path_to_template, params, **kwargs):
|
| + loader = jinja2.ModuleLoader(os.path.join(
|
| + mojo_generator.bytecode_path, "%s.zip" % mojo_generator.GetTemplatePrefix(
|
| + )))
|
| final_kwargs = dict(mojo_generator.GetJinjaParameters())
|
| final_kwargs.update(kwargs)
|
| - jinja_env = jinja2.Environment(loader=loader, keep_trailing_newline=True,
|
| + jinja_env = jinja2.Environment(loader=loader,
|
| + keep_trailing_newline=True,
|
| **final_kwargs)
|
| jinja_env.globals.update(mojo_generator.GetGlobals())
|
| - if filters:
|
| - jinja_env.filters.update(filters)
|
| - template = jinja_env.get_template(template_name)
|
| + jinja_env.filters.update(mojo_generator.GetFilters())
|
| + template = jinja_env.get_template(path_to_template)
|
| return template.render(params)
|
|
|
|
|
| def UseJinja(path_to_template, **kwargs):
|
| - # Get the directory of our caller's file.
|
| - base_dir = os.path.dirname(inspect.getfile(sys._getframe(1)))
|
| def RealDecorator(generator):
|
| def GeneratorInternal(*args, **kwargs2):
|
| parameters = generator(*args, **kwargs2)
|
| - return ApplyTemplate(args[0], base_dir, path_to_template, parameters,
|
| - **kwargs)
|
| + return ApplyTemplate(args[0], path_to_template, parameters, **kwargs)
|
| GeneratorInternal.func_name = generator.func_name
|
| return GeneratorInternal
|
| return RealDecorator
|
| +
|
| +
|
| +def PrecompileTemplates(generator_modules, output_dir):
|
| + for module in generator_modules.values():
|
| + generator = module.Generator(None)
|
| + jinja_env = jinja2.Environment(loader=jinja2.FileSystemLoader([os.path.join(
|
| + os.path.dirname(module.__file__), generator.GetTemplatePrefix())]))
|
| + jinja_env.filters.update(generator.GetFilters())
|
| + jinja_env.compile_templates(
|
| + os.path.join(output_dir, "%s.zip" % generator.GetTemplatePrefix()),
|
| + extensions=["tmpl"],
|
| + zip="stored",
|
| + py_compile=True,
|
| + ignore_errors=False)
|
|
|