[Checkins] SVN: megrok.genshi/trunk/src/megrok/genshi/ Text template support.

Lennart Regebro regebro at gmail.com
Thu Oct 4 10:56:23 EDT 2007


Log message for revision 80615:
  Text template support.
  

Changed:
  U   megrok.genshi/trunk/src/megrok/genshi/components.py
  U   megrok.genshi/trunk/src/megrok/genshi/templatereg.py
  U   megrok.genshi/trunk/src/megrok/genshi/tests/test_genshitemplate.py
  A   megrok.genshi/trunk/src/megrok/genshi/tests/test_genshitemplate_templates/hunter.gtt

-=-
Modified: megrok.genshi/trunk/src/megrok/genshi/components.py
===================================================================
--- megrok.genshi/trunk/src/megrok/genshi/components.py	2007-10-04 14:31:23 UTC (rev 80614)
+++ megrok.genshi/trunk/src/megrok/genshi/components.py	2007-10-04 14:56:23 UTC (rev 80615)
@@ -46,3 +46,33 @@
         namespace = view.getDefaultVariables()
         namespace.update(view.getTemplateVariables())
         return self(namespace)
+
+class GenshiTextTemplate(grok.components.GrokPageTemplate):
+
+    zope.interface.implements(grok.interfaces.ITemplateFile)
+    
+    def __init__(self, filename=None, _prefix=None, html=None):
+        if ((html is not None and filename is not None) or
+            (html is None and filename is None)):
+            raise AssertionError("You must pass either html or filename but not both.")
+        
+        if html is not None:
+            self._template = genshi.template.TextTemplate(html)
+        else:
+            loader = genshi.template.TemplateLoader(_prefix)
+            self._template = loader.load(filename, cls=genshi.template.TextTemplate)
+            
+    def __call__(self, namespace):
+        stream = self._template.generate(**namespace)
+        return stream.render('text')
+    
+    def _factory_init(self, factory):
+        pass
+    
+    def getDefaultVariables(self):
+        return {}
+    
+    def render_template(self, view):
+        namespace = view.getDefaultVariables()
+        namespace.update(view.getTemplateVariables())
+        return self(namespace)

Modified: megrok.genshi/trunk/src/megrok/genshi/templatereg.py
===================================================================
--- megrok.genshi/trunk/src/megrok/genshi/templatereg.py	2007-10-04 14:31:23 UTC (rev 80614)
+++ megrok.genshi/trunk/src/megrok/genshi/templatereg.py	2007-10-04 14:56:23 UTC (rev 80615)
@@ -23,4 +23,12 @@
     
     def __call__(self, filename, _prefix=None):
         return components.GenshiMarkupTemplate(filename, _prefix)
+
+class GenshiTextTemplateFileFactory(grok.GlobalUtility):
+    
+    grok.implements(grok.interfaces.ITemplateFactory)
+    grok.name('gtt')
+    
+    def __call__(self, filename, _prefix=None):
+        return components.GenshiTextTemplate(filename, _prefix)
     
\ No newline at end of file

Modified: megrok.genshi/trunk/src/megrok/genshi/tests/test_genshitemplate.py
===================================================================
--- megrok.genshi/trunk/src/megrok/genshi/tests/test_genshitemplate.py	2007-10-04 14:31:23 UTC (rev 80614)
+++ megrok.genshi/trunk/src/megrok/genshi/tests/test_genshitemplate.py	2007-10-04 14:56:23 UTC (rev 80615)
@@ -27,7 +27,11 @@
     def me_do(self):
         return self.text
 
+class Hunter(grok.View):
+    
+    game = "MAMMOTH!"
 
+
 class GenshiTemplateTests(unittest.TestCase):
     
     def test_templatedir(self):
@@ -76,8 +80,15 @@
         view = component.getMultiAdapter((manfred, request), name='gatherer')
         html = view()
         self.assert_('Lovely blueberries!' in html)
-        
 
+    def test_texttemplate(self):
+        manfred = Mammoth()
+        request = TestRequest()
+        view = component.getMultiAdapter((manfred, request), name='hunter')
+        text = view()
+        self.assertEquals(text, 'ME GROK HUNT MAMMOTH!!')
+
+
 def test_suite():
     from megrok.genshi.tests import FunctionalLayer
     suite = unittest.TestSuite()

Added: megrok.genshi/trunk/src/megrok/genshi/tests/test_genshitemplate_templates/hunter.gtt
===================================================================
--- megrok.genshi/trunk/src/megrok/genshi/tests/test_genshitemplate_templates/hunter.gtt	                        (rev 0)
+++ megrok.genshi/trunk/src/megrok/genshi/tests/test_genshitemplate_templates/hunter.gtt	2007-10-04 14:56:23 UTC (rev 80615)
@@ -0,0 +1 @@
+ME GROK HUNT ${view.game}!
\ No newline at end of file



More information about the Checkins mailing list