<dtml-var expr="abs(-23)"> which I would have expected to evaluate to 23.
Instead I get the error:
Error Type: NameError Error Value: global name 'abs' is not defined.
I guess this is because abs is not in the current nemespace. My question is where is the documentation that tells me which namespace to use and when?
Try <dtml-var expr="_.abs(-23)"> which should work. Why? Take this with a grain of salt, because I'm not certain I'll get it correct: When you use an expression, you are in the document's namespace. 'abs' is a function in the DTML namespace (the namespace of DTML itself, not an object using DTML.) To get DTML's namespace, which allows you to use DTML things to get to the current object's namespace, you use the magic underscore '_'. Thus you can get to DTML functions, use indexing to get values, &c. That's my best shot at explaining it. Of course, that's probably all wrong. I just know how to do it, not necessarily how it works. --jcc