[Cheetahtemplate-discuss] #def vs. #attr revisited
Brought to you by:
rtyler,
tavis_rudd
From: Michael H. <ha...@me...> - 2001-11-28 16:49:20
|
Having played with cheetah for a couple weeks, I wanted to add yet another perspective to the WishList item about a one-line "#def" statement. Consider it as you will. I basically agree with Ian that being able to do: #def spam = "This is the value for spam." to define an argumentless method would be really handy. As Ian points out, it makes it easier to access the value from python (you know it's a method, not an attribute). But it's also useful from a user consistency point of view. I'm writing site templates so that less knowledgeable users can author good looking, standard-format content. I need those users to fill in what are essentially data fields. Some fields, like "Biography", are best handled in block form. Others, like "EmailAddress", are better handled on a single line (for brevity and to avoid whitespace issues). To the user who knows nothing about python, these slots are identical. The user doesn't know about attributes and methods, and doesn't (and shouldn't care). Why do I have to explain that one-liners use #attr and blocks use #def ? The difference means nothing to them. It's just one more thing to learn. Allowing the second form of #def simplifies the process. Yes there are districtions between attributes and methods and it's good that they are accessible from cheetah. However, for a template language that it supposed to make authoring simpler, it's the syntactic flexibility of "#def spam = 'eggs' #" that really matters. I think #def should be able to handle both fields and blocks. (For consistency, #block should probably also have the second form.) Thanks for (re-)considering this issue! --Mike |