module

Crinja::AST

Jinja2's conditional expression: {{ "active" if current else "" }}, {% set label = page.title if page.title else "Untitled" %}.

Upstream rejected it ("expression was not fully parsed"), one of the most common Jinja2 idioms. Semantics follow Jinja2: only the chosen branch is evaluated, a missing else yields undefined (renders empty), and a if x else b if y else c nests to the right. The collection of a {% for x in xs if cond %} loop keeps reading if as the loop filter.

Nested types