[Checkins] SVN: Sandbox/malthe/chameleon.core/ Added functionality to bind macros to keyword arguments.

Malthe Borch mborch at gmail.com
Thu Oct 2 19:41:57 EDT 2008


Log message for revision 91681:
  Added functionality to bind macros to keyword arguments.

Changed:
  U   Sandbox/malthe/chameleon.core/CHANGES.txt
  U   Sandbox/malthe/chameleon.core/src/chameleon/core/template.py
  U   Sandbox/malthe/chameleon.core/src/chameleon/core/template.txt

-=-
Modified: Sandbox/malthe/chameleon.core/CHANGES.txt
===================================================================
--- Sandbox/malthe/chameleon.core/CHANGES.txt	2008-10-02 23:27:03 UTC (rev 91680)
+++ Sandbox/malthe/chameleon.core/CHANGES.txt	2008-10-02 23:41:57 UTC (rev 91681)
@@ -4,6 +4,8 @@
 head
 ~~~~
 
+- Added support for macros prebound to keyword arguments. [malthe]
+
 1.0b1 (released 2/10/2008)
 ~~~~~~~~~~~~~~~~~~~~~~~~~~
 

Modified: Sandbox/malthe/chameleon.core/src/chameleon/core/template.py
===================================================================
--- Sandbox/malthe/chameleon.core/src/chameleon/core/template.py	2008-10-02 23:27:03 UTC (rev 91680)
+++ Sandbox/malthe/chameleon.core/src/chameleon/core/template.py	2008-10-02 23:41:57 UTC (rev 91681)
@@ -187,10 +187,15 @@
         self.render = render
 
 class Macros(object):
-    def __init__(self, render_macro):
+    def __init__(self, render_macro, **kwargs):
         self.render = render_macro
+        self.bound_parameters = kwargs
 
     def __getitem__(self, name):
         def render(**kwargs):
+            kwargs.update(self.bound_parameters)
             return self.render(name, parameters=kwargs)
         return Macro(render)
+
+    def bind(self, **kwargs):
+        return Macros(self.render, **kwargs)

Modified: Sandbox/malthe/chameleon.core/src/chameleon/core/template.txt
===================================================================
--- Sandbox/malthe/chameleon.core/src/chameleon/core/template.txt	2008-10-02 23:27:03 UTC (rev 91680)
+++ Sandbox/malthe/chameleon.core/src/chameleon/core/template.txt	2008-10-02 23:41:57 UTC (rev 91681)
@@ -31,6 +31,20 @@
   >>> t.filename.startswith(os.sep)
   True
 
+Macros
+------
+
+In this package, macros are supported only as a framework for actual
+language implementations.
+
+  >>> from chameleon.core.template import Macros
+  
+  >>> def render(name, parameters={}):
+  ...     print parameters.items()
+  
+  >>> Macros(render).bind(test=u"Hello, world!")[""].render()
+  [('test', u'Hello, world!')]
+  
 XInclude support
 ----------------
 



More information about the Checkins mailing list