|
Jim Gallacher
jg.lists at sympatico.ca
Thu May 12 11:15:01 EDT 2005
Wouter van Marle wrote:
> On Wed, 2005-05-11 at 23:49 -0400, Gregory (Grisha) Trubetskoy wrote:
>
>>On Wed, 11 May 2005, Jim Gallacher wrote:
>>
>>
>>>You found one of the warts in psp. Since your for loop contains no further
>>>python statements, the parser gets confused. Try adding a single comment at
>>>the beginning of your for loop:
>>>
>>><p> some text for the page </p>
>>><%
>>>for r in Results:
>>> # begin indentation - comment fixes the syntax error
>>>%>
>>>I got the result <%=r%><br>
>>><%
>>># end indentation
>>>%>
>>
>>
>>Actually, (IIRC purposely undocumented), PSP is smart enough to guess that
>>a if code ends on a ":" you mean to start a new block.
>
>
> I have found documentation where this is indeed confirmed; a line ending
> in a colon (:) starts an indentation.
>
I used indented comment trick after the for statment for a problem
unrelated to Wouter's. I'm now in the habit of always using it.
For example, if you have a nested for loop such as the following, an
IndentationError is raised.
<%
for title,doc_list in unit_list:
%>
<h4>Unit <%= title %><h4>
<%
for doc in doc_list:
%>
<p><%= doc['url'] %>: <%= doc['title'] %></p>
<%
# end of block
# end of block
%>
I noticed that if there was some python statement immediately after the
first for:, the error went away. Now I always stick an indented comment
immediately after the for statement. I also found problems when
generating tables in the inner loop, where I was only getting a single
closing </table> tag instead of one for each iteration of the inner loop
(or something like that - I can't generate an example off the top of my
head and the offending code is now gone).
I haven't commented on this before as it was a problem I had when I
first starting using psp pages a few months ago, and I wasn't sure if it
was a feature or a bug. :)
Regards,
Jim
|