[Checkins] SVN: megrok.genshi/trunk/src/megrok/genshi/components.py Updated to new simplifed story. A whole 8 lines shorter. (Well, that's actually 11%, so it's

Lennart Regebro regebro at gmail.com
Mon Nov 5 12:53:30 EST 2007


Log message for revision 81547:
  Updated to new simplifed story. A whole 8 lines shorter. (Well, that's actually 11%, so it's 
  not so bad, really).
  

Changed:
  U   megrok.genshi/trunk/src/megrok/genshi/components.py

-=-
Modified: megrok.genshi/trunk/src/megrok/genshi/components.py
===================================================================
--- megrok.genshi/trunk/src/megrok/genshi/components.py	2007-11-05 17:38:21 UTC (rev 81546)
+++ megrok.genshi/trunk/src/megrok/genshi/components.py	2007-11-05 17:53:29 UTC (rev 81547)
@@ -19,49 +19,41 @@
 import grok
 import martian
 
-class GenshiTemplateBase(grok.components.GrokPageTemplate):
+class GenshiTemplateBase(grok.components.GrokTemplate):
         
     def render(self, view):
-        namespace = self.namespace(view)
-        namespace.update(view.namespace())
-        stream = self._template.generate(**namespace)
+        stream = self._template.generate(**self.getNamespace(view))
         return stream.render(self.result_type)
 
+    def fromTemplate(self, template):
+        return self.cls(template)
+        
+    def fromFile(self, filename, _prefix=None):
+        loader = genshi.template.TemplateLoader(_prefix)
+        return loader.load(filename, cls=self.cls)
 
 class GenshiMarkupTemplate(GenshiTemplateBase):
     
     result_type = 'xhtml'
+    cls = genshi.template.MarkupTemplate
     
-    def __init__(self, html):
-        self._template = genshi.template.MarkupTemplate(html)
-        self.__grok_module__ = martian.util.caller_module()
+class GenshiTextTemplate(GenshiTemplateBase):
 
+    result_type = 'text'
+    cls = genshi.template.TextTemplate
         
-class GenshiMarkupTemplateFile(GenshiTemplateBase, grok.components.GlobalUtility):
+class GenshiMarkupTemplateFactory(grok.components.GlobalUtility):
 
-    zope.interface.implements(grok.interfaces.ITemplateFile)
-    zope.interface.classProvides(grok.interfaces.ITemplateFileFactory)
+    zope.interface.implements(grok.interfaces.ITemplateFileFactory)
     grok.name('g')
-    grok.direct()
+    
+    def __call__(self, filename, _prefix=None):
+        return GenshiMarkupTemplate(filename=filename, _prefix=_prefix)
 
-    result_type = 'xhtml'
+class GenshiTextTemplateFactory(grok.components.GlobalUtility):
 
-    def __init__(self, filename, _prefix=None):
-        loader = genshi.template.TemplateLoader(_prefix)
-        self._template = loader.load(filename)
-        self.__grok_module__ = martian.util.caller_module()
-
-
-class GenshiTextTemplateFile(GenshiTemplateBase, grok.components.GlobalUtility):
-
-    result_type = 'xhtml'
-    
-    zope.interface.implements(grok.interfaces.ITemplateFile)
-    zope.interface.classProvides(grok.interfaces.ITemplateFileFactory)
+    zope.interface.implements(grok.interfaces.ITemplateFileFactory)
     grok.name('gt')
-    grok.direct()
-    
-    def __init__(self, filename, _prefix=None):
-        loader = genshi.template.TemplateLoader(_prefix)
-        self._template = loader.load(filename, cls=genshi.template.TextTemplate)
-        self.__grok_module__ = martian.util.caller_module()
+
+    def __call__(self, filename, _prefix=None):
+        return GenshiTextTemplate(filename=filename, _prefix=_prefix)



More information about the Checkins mailing list