Simple Macro Args
Note that a variation on the functionality described here will appear in the next version of Albatross after 1.35 (AndrewMcNamara). |
Macro handling in standard Albatross is powerful but a bit unwieldy to use and quite verbose, especially when the macro arguments are small. So I have made two small patches to make this easy. The first is Default_Macro_Args. The second is the ability to specify simple macro arguments directly in the <al-expand> tag, without using <al-setarg>. The limitation here is that the argument specified in this way must be a simple string; Albatross tags such as <al-value> will not be expanded in these arguments.
Given the box macro described in Default_Macro_Args, you would have to specify the box color like this:
<al-expand name="box"> <al-setarg name="color">green</al-setarg> # box contents </al-expand>
With the attached patch, this becomes a much more readable:
<al-expand name="box" color="green"> # box contents </al-expand>
The attached patch is against 1.10:
--- albatross/tags.py.DIST1 Mon Jul 21 12:45:47 2003
+++ albatross/tags.py Mon Jul 21 12:55:35 2003
@@ -7,7 +7,7 @@
#
import time
-from albatross.template import Content, EmptyTag, EnclosingTag
+from albatross.template import Text, Content, EmptyTag, EnclosingTag
from albatross.common import *
# Empty content object which tags can use as default value for
@@ -1210,6 +1210,9 @@
if not macro:
self.raise_error('undefined macro "%s"' % self.get_attrib('name'))
args = {}
+ for k, v in self.attrib_items():
+ if k != 'name':
+ args[k] = Text(v)
args[None] = self.content
for name, value in self.arg_dict.items():
args[name] = value(beware that cut-n-pasting this will probably mess with whitespace so you may need to apply the patch by hand, or use "patch -l" or some such.)