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) |