[Repoze-checkins] r1370 - in repoze.bfg/trunk/repoze/bfg: . tests

Paul Everitt paul at agendaless.com
Fri Jul 18 10:23:58 EDT 2008


Author: Paul Everitt <paul at agendaless.com>
Date: Fri Jul 18 10:23:58 2008
New Revision: 1370

Log:
Using Chris's help, changed signature of interface to support what the XSLT processors expects.  Fixed tests to assert that interface.

Modified:
   repoze.bfg/trunk/repoze/bfg/interfaces.py
   repoze.bfg/trunk/repoze/bfg/template.py
   repoze.bfg/trunk/repoze/bfg/tests/test_xslt.py

Modified: repoze.bfg/trunk/repoze/bfg/interfaces.py
==============================================================================
--- repoze.bfg/trunk/repoze/bfg/interfaces.py	(original)
+++ repoze.bfg/trunk/repoze/bfg/interfaces.py	Fri Jul 18 10:23:58 2008
@@ -13,6 +13,12 @@
     def __call__(*arg, **kw):
         """ Must return an object that implements IResponse; args are
         mapped into an IView's __call__ by mapply-like code """
+
+class INodeView(IView):
+   def __call__(node, **kw):
+       """ Must return an object that implements IResponse; node is an
+       lxml.etree Element and **kw provides parameters to an XSLT
+       processor """
         
 class IViewFactory(Interface):
     def __call__(context, request):

Modified: repoze.bfg/trunk/repoze/bfg/template.py
==============================================================================
--- repoze.bfg/trunk/repoze/bfg/template.py	(original)
+++ repoze.bfg/trunk/repoze/bfg/template.py	Fri Jul 18 10:23:58 2008
@@ -11,6 +11,7 @@
 from webob import Response
 
 from repoze.bfg.interfaces import IView
+from repoze.bfg.interfaces import INodeView
 from repoze.bfg.interfaces import ITemplateFactory
 
 class Z3CPTTemplateFactory(object):
@@ -28,15 +29,14 @@
 
 class XSLTemplateFactory(object):
     classProvides(ITemplateFactory)
-    implements(IView)
+    implements(INodeView)
 
     def __init__(self, path):
         self.path = path
 
-    def __call__(self, *arg, **kw):
-        node = kw.get("node")
+    def __call__(self, node, **kw):
         processor = get_processor(self.path)
-        result = str(processor(node))
+        result = str(processor(node, **kw))
         response = Response(result)
         return response
 
@@ -92,7 +92,7 @@
 
     return template(**kw)
 
-def render_transform(path, **kw):
+def render_transform(path, node, **kw):
     """ Render a XSL template at the package-relative path (may also
     be absolute) using the kwargs in ``*kw`` as top-level names and
     return a Response object."""
@@ -106,11 +106,10 @@
         path = os.path.join(prefix, path)
 
     template = queryUtility(IView, path)
-    node = kw.get("node")
     if template is None:
         if not os.path.exists(path):
             raise ValueError('Missing template file: %s' % path)
         template = XSLTemplateFactory(path)
         registerTemplate(template, path)
 
-    return template(**kw)
+    return template(node, **kw)

Modified: repoze.bfg/trunk/repoze/bfg/tests/test_xslt.py
==============================================================================
--- repoze.bfg/trunk/repoze/bfg/tests/test_xslt.py	(original)
+++ repoze.bfg/trunk/repoze/bfg/tests/test_xslt.py	Fri Jul 18 10:23:58 2008
@@ -34,16 +34,16 @@
         klass = self._getTargetClass()
         return klass(*arg, **kw)
 
-    def test_instance_conforms_to_IView(self):
+    def test_instance_conforms_to_INodeView(self):
         from zope.interface.verify import verifyObject
-        from repoze.bfg.interfaces import IView
+        from repoze.bfg.interfaces import INodeView
         path = self._getTemplatePath('minimal.xsl')
-        verifyObject(IView, self._makeOne(path))
+        verifyObject(INodeView, self._makeOne(path))
 
-    def test_class_conforms_to_IView(self):
+    def test_class_conforms_to_INodeView(self):
         from zope.interface.verify import verifyClass
-        from repoze.bfg.interfaces import IView
-        verifyClass(IView, self._getTargetClass())
+        from repoze.bfg.interfaces import INodeView
+        verifyClass(INodeView, self._getTargetClass())
 
     def test_class_conforms_to_ITemplateFactory(self):
         from zope.interface.verify import verifyObject


More information about the Repoze-checkins mailing list