On Mar 12, 2011, at 3:14 PM, pierreth wrote:
>
> I am sorry Jonathan, I think we have a misunderstanding. All this
> works with web2py. The problem is that characters "<" and ">" need to
> be escaped in html. Otherwise, it is not html. The html produced by
> web2py is well formed but in the template itself the html it is not
> well formed. Because of this, the templates are not using well formed
> html all the times and the html code analyzer of my IDE is given me
> errors.
I see. Yes, the templates are not themselves html, and once they're parsed,
they're python, which gets executed to form the eventual html.
I'm not sure how you'd work around that. Even if you were able to escape the
python code (say by enclosing it in html comment blocks (which would have to be
stripped off during parsing)), the template files are not in general complete
html, relying as they do on layout or other included files. You run into the
same problem with SSI; even though the SSI directives parse as html comments,
the .shtml files are seldom valid html.
Consider something like this:
<div id="{{=myid}}">
I can't see an analyzer being happy with that regardless of what you did with
it. As it is, it has illegal characters for an id. Wrapping it in html comments
wouldn't help (I don't think html comments are legal in that context).
Would it suffice to hide the template files from the IDE? Or at least fool it
into treating them as plain text?
>
> On Mar 12, 3:11 pm, Jonathan Lundell <[email protected]> wrote:
>> On Mar 12, 2011, at 11:54 AM, Jonathan Lundell wrote:
>>
>>
>>
>>> On Mar 12, 2011, at 11:39 AM, pierreth wrote:
>>
>>>> I think you mean the response object.
>>
>>> Yes, response.
>>
>>>> The example code you gave still
>>>> use the character "<" so it does not help.
>>
>>> Did you try it? How about the second version?
>>
>> Hmm. I take back what I said earlier: all versions work for me, including
>> your original one.
>>
>> In what context are you using the expression?
>>
>>
>>
>>>> In fact, the problem is that web2py is not processing the xml document
>>>> but it parse directly the html file. I would really like Massimo to
>>>> fix this.
>>
>>>> On Mar 12, 2:15 pm, Jonathan Lundell <[email protected]> wrote:
>>>>> On Mar 12, 2011, at 11:05 AM, pierreth wrote:
>>
>>>>>> Hello,
>>
>>>>>> I have small problem when the characters "< and ">" are used in web2py
>>>>>> html template views. Using them for Python breaks the html:
>>
>>>>>> {{="OK" if x < 0 else "bad"}}
>>
>>>>>> Because these characters are not escaped in the code, the html file is
>>>>>> no longer well formed.
>>
>>>>>> Using the html entities "<" and "&gr;" does not solve the problem
>>>>>> because web2py gives an error when theses characters are used as
>>>>>> Python code in templates.
>>
>>>>>> Is it possible to fix this to have well formed html for web2py
>>>>>> templates?
>>
>>>>> This is a consequence of the way the '=' (request.write) operator behaves
>>>>> at the beginning of a code block: it treats the entire string as its
>>>>> argument string, something like: request.write('"OK" if x < 0 else "bad"')
>>
>>>>> You can rewrite it to use request.write explicitly, or to put each =
>>>>> operator on its own line.
>>
>>>>> {{request.write("OK" if x < 0 else "bad")}}
>>
>>>>> or
>>
>>>>> {{if x < 0:
>>>>> ="OK"
>>>>> else:
>>>>> ="bad"
>>>>> pass
>>
>>>>> }}
>>
>>>>> (I think)
>>
>>>>> When the '=' operator is embedded in a code block, it consumes everything
>>>>> until the end of the physical line or code block, whichever comes first.
>>>>> When it begins a code block, it consumes the entire block.
>>
>>