[
https://issues.apache.org/jira/browse/FREEMARKER-21?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16187039#comment-16187039
]
Daniel Dekany edited comment on FREEMARKER-21 at 9/30/17 11:17 AM:
-------------------------------------------------------------------
There was another take on this in duplicate FREEMARKER-75. Based on that, my
current idea is that we need something like {{expression?as(variableName)}},
which crates a nested content variable (aka. a loop variable). This built-in
would silently bypass {{null}}, so that {{<#if some.long.expression?as\(x)??>}}
works.
There's a problem that it's not possible to assign {{null}} to a variable, so
this rises the question of what happens if I have {{<#if true ||
some.long.expression?as\(x)??>}}, i.e., we enter the nested content despite
{{x}} wasn't assigned to... Well, it's basically the same issue as with
{{#list}}-ing something that contains {{null}} at some places: reading {{x}}
will fall back to the higher scope. Which is horrible, but, well, that can be
fixed together with {{#list}}, as it's the same problem. (It's not even so hard
to fix, the problem is, as always, backward compatibility...)
was (Author: ddekany):
That was another take on this in duplicate FREEMARKER-75. Based on that, my
current ideas is that we need something like {{expression?as(variableName)}},
which crates a nested content variable (aka. a loop variable). This built-in
would silently bypass {{null}}, so that {{<#if some.long.expression?as(x)??>}}
works.
There's a problem that it's not possible to assign {{null}} to a variable, so
this rises the question of what happens if I have {{<#if true ||
some.long.expression?as(x)??>}}, i.e., we enter the nested content despite
{{x}} wasn't assigned to... Well, it's basically the same issue as with
{{#list}}-ing something that contains {{null}} at some places: reading {{x}}
will fall back to the higher scope. Which is horrible, but, well, that can be
fixed together with {{#list}}, as it's the same problem. (It's not even so hard
to fix, the problem is, as always, backward compatibility...)
> Reference to the object in condition - avoid repeating the same in #if and
> ${...}
> ---------------------------------------------------------------------------------
>
> Key: FREEMARKER-21
> URL: https://issues.apache.org/jira/browse/FREEMARKER-21
> Project: Apache Freemarker
> Issue Type: New Feature
> Components: engine
> Reporter: Ondra Žižka
>
> Repeating stuff is annoying, especially in programming.
> Therefore this is annoying:
> {code}
> <#if someVariable.someMethod.someProperty??>
> <div>${someVariable.someMethod.someProperty}</div>
> </#if>
> {code}
> This would be better:
> {code}
> <#if someVariable.someMethod.someProperty?? as value>
> <div>${value}</div>
> </#if>
> {code}
> Not talking about the fact that it could only be evaluated once.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)