#13307 closed defect (fixed)
jinjachecker doesn't correctly parse multiline expressions
| Reported by: | Ryan J Ollos | Owned by: | Ryan J Ollos |
|---|---|---|---|
| Priority: | normal | Milestone: | 1.4.2 |
| Component: | general | Version: | |
| Severity: | normal | Keywords: | jinjachecker |
| Cc: | Branch: | ||
| Release Notes: | |||
| API Changes: | |||
| Internal Changes: |
Fixed |
||
Description (last modified by )
./contrib/jinjachecker.py trac/templates/environment_info.html -j
[...]
51 {IF plugins:
61 {FOR plugin in plugins:
62 SET components = plugin.modules|map(attribute='components')|flatten
65 SET url = (plugin.info.home_page or
69 {IF url:
[...]
However, markup is:
# set url = (plugin.info.home_page or plugin.info.author_email and 'mailto:' + plugin.info.author_email)
Output of jinjachecker should be:
[...]
51 {IF plugins:
61 {FOR plugin in plugins:
62 SET components = plugin.modules|map(attribute='components')|flatten
65 SET url = (plugin.info.home_page or
66 plugin.info.author_email and
67 'mailto:' + plugin.info.author_email)
69 {IF url:
[...]
Attachments (0)
Change History (7)
comment:2 by , 5 years ago
Replying to Ryan J Ollos:
jinjacheckerdoesn't recognize the content as being in a block, so thedivis needed to avoid an error.
Ah, ## jinjacheck markup can be used to mark the errors as OK.
comment:3 by , 5 years ago
Replying to Ryan J Ollos:
The reason the fix matters is that before the fix the HTML content discovered by
jinjacheckeris:37 38 39 show_history else max_version) 40 41 comment_version == max_version) 42 43 44 <a href="#comment:${cnum}" class="${cls}">${prefix}${cnum}</a>
The error is silenced by the jinjacheck: "CDATA" OK.
When that is removed:
trac/ticket/templates/ticket_change.html:249:8: Element body content does not follow the DTD, expecting (p | h1 | h2 | h3 | h4 | h5 | h6 | div | ul | ol | dl | pre | hr | blockquote | address | fieldset | table | form | noscript | ins | del | script)*, got (CDATA a h3 div form div div div div ) # -- HTML 1 errors One error found.
comment:4 by , 5 years ago
| Internal Changes: | modified (diff) |
|---|---|
| Owner: | set to |
| Status: | new → assigned |
Proposed changes log:rjollos.git:t13307_jinjachecker_multiline.
comment:5 by , 5 years ago
| Resolution: | → fixed |
|---|---|
| Status: | assigned → closed |
comment:6 by , 5 years ago
| Description: | modified (diff) |
|---|



Related, in r17372 I wrapped the block in a
divto avoid this error:jinjacheckerdoesn't recognize the content as being in a block, so thedivis needed to avoid an error. Thedivwon't be rendered since it's in a child template and outside a block, so it seems to work fine. Aside, When the script is converted to usepytidylib, maybe the blocks should be extracted and parsed usingtidy_fragment?After fixing the issue in comment:description, a similar issue is seen:
jinjacheckerdoesn't recognize the content as being amacro: tags/trac-1.4.1/trac/ticket/templates/ticket_change.html@:43-45#L26.The reason the fix matters is that before the fix the HTML content discovered by
jinjacheckeris:37 38 39 show_history else max_version) 40 41 comment_version == max_version) 42 43 44 <a href="#comment:${cnum}" class="${cls}">${prefix}${cnum}</a>This is the same multiline statement problem in comment:description, and seems to obscure
jinjacheckerfrom discovering the DTD error.