[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