Minor bug in 'Let' tag; fix enclosed
When you use the new 'let' tag with a Python expression containing a syntax error, the Let tag's __init__ method bombs with a NameError, because I didn't sufficiently clean up the code I was cribbing from when I developed it. :) I can't believe it's been in there all this time, but I guess I don't make very many Python syntax errors in my #let tags. :) I also noticed that there were some typos in the 'Let.stx' file, as well a few errors of fact and omission. (E.g., newlines are NOT required between arguments to #let.) Diffs for both files (against current CVS of DocumentTemplate) follow: Index: DT_Let.py =================================================================== RCS file: /cvs-repository/Packages/DocumentTemplate/DT_Let.py,v retrieving revision 1.3 diff -r1.3 DT_Let.py 137c137 < tag) ---
'let')
Index: Let.stx =================================================================== RCS file: /cvs-repository/Packages/DocumentTemplate/Let.stx,v retrieving revision 1.1 diff -r1.1 Let.stx 20,24c20,26 < The #let tag works like the #with tag, but is more flexible in that < it allows you to make multiple assignments, and allows you to chain < assignments, using earlier declarations in later assignments. Notice < inthe ablove example, the 'result' variable is based on 'num' and < 'index', both of which are assigned in the same #let expression. ---
The #let tag works like using a #with tag on a _.namespace() object, but is more flexible in that it allows you to access variables without using _[] notation, and also lets you use the the results of earlier declarations in later assignments. Notice that in the above example, the 'result' variable is based on 'num' and 'index', both of which are assigned in the same #let expression. 26,29c28,30 < Syntacticly, each argument to be evalulated in the head of the let < tag must be seperated by a newline. Enclosing an argument in double < quotes causes it to be evaluated by the DTML expression machinery. < Un-quoted arguments are referenced by name.
Enclosing an argument in double quotes causes it to be evaluated by the DTML expression machinery. Un-quoted arguments are referenced by name.
participants (1)
-
Phillip J. Eby