New submission from Josip Delic <delij...@gmail.com>:

added macro support for repoze.bfg.jinja2 with test ;-)

----------
files: jinja2_macro.patch
messages: 256
nosy: delijati
priority: bug
status: unread
title: Macro support for repoze.bfg.jinja2

__________________________________
Repoze Bugs <b...@bugs.repoze.org>
<http://bugs.repoze.org/issue97>
__________________________________
Index: repoze/bfg/jinja2/tests/test_bindings.py
===================================================================
--- repoze/bfg/jinja2/tests/test_bindings.py	(Revision 6447)
+++ repoze/bfg/jinja2/tests/test_bindings.py	(Arbeitskopie)
@@ -143,4 +143,13 @@
         response = self._callFUT('templates/helloworld.jinja2')
         self.assertEqual(response.app_iter[0],
                          u'\nHello f\xf6\xf6'.encode('utf-8'))
+
+class TestRenderMacroTemplate(unittest.TestCase):
+    def _callFUT(self, path):
+        from repoze.bfg.jinja2.bindings import render_template
+        return render_template(path)
         
+    def test_it(self):
+        rendering = self._callFUT('templates/hellomacro.jinja2')
+        self.assertEqual(rendering, u'\nHello delijati\n')
+       
Index: repoze/bfg/jinja2/tests/templates/hellomacro.jinja2
===================================================================
--- repoze/bfg/jinja2/tests/templates/hellomacro.jinja2	(Revision 0)
+++ repoze/bfg/jinja2/tests/templates/hellomacro.jinja2	(Revision 0)
@@ -0,0 +1,3 @@
+{% import 'hellomacro.macro_jinja2' as macro %}
+{{ macro.foo('delijati') }}
+
Index: repoze/bfg/jinja2/tests/templates/hellomacro.macro_jinja2
===================================================================
--- repoze/bfg/jinja2/tests/templates/hellomacro.macro_jinja2	(Revision 0)
+++ repoze/bfg/jinja2/tests/templates/hellomacro.macro_jinja2	(Revision 0)
@@ -0,0 +1,5 @@
+{% macro foo(name) -%}
+  Hello {{ name }}
+{%- endmacro %}
+
+
Index: repoze/bfg/jinja2/bindings.py
===================================================================
--- repoze/bfg/jinja2/bindings.py	(Revision 6447)
+++ repoze/bfg/jinja2/bindings.py	(Arbeitskopie)
@@ -8,7 +8,8 @@
 from repoze.bfg.path import caller_path
 
 from jinja2.loaders import FunctionLoader
-from jinja2 import Environment
+from jinja2 import Environment, ChoiceLoader, FileSystemLoader
+import os
 
 def _auto_reload():
     settings = queryUtility(ISettings)
@@ -34,18 +35,24 @@
     Extends jinja2.loaders.FunctionLoader with configurable auto-reloading.    
     """
     auto_reload = None
+
     def get_source(self, environment, template):
         if self.auto_reload is None:
             self.auto_reload = _auto_reload()
         environment.auto_reload = self.auto_reload
         return super(BfgLoader, self).get_source(environment, template)
-        
-env = Environment(loader=BfgLoader(load_template))
 
+
+loader_array = []
+loader_array.append(BfgLoader(load_template))
+
+env = Environment(loader=ChoiceLoader(loader_array))
+
 def get_template(path):
     """ Return a z3c.pt template object at the package-relative path
     (may also be absolute) """
     path = caller_path(path)
+    env.loader.loaders.append(FileSystemLoader(os.path.dirname(path)))
     return env.get_template(path)
 
 def render_template(path, **kw):
Index: CHANGES.txt
===================================================================
--- CHANGES.txt	(Revision 6447)
+++ CHANGES.txt	(Arbeitskopie)
@@ -3,7 +3,7 @@
 
 Next release
 ------------
-
+- added macro support, now it also add the template folder
 - Respect ``reload_templates`` option in BFG.
 
 0.3 (2009-05-03)
_______________________________________________
Repoze-dev mailing list
Repoze-dev@lists.repoze.org
http://lists.repoze.org/listinfo/repoze-dev

Reply via email to