[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