[ 
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)

Reply via email to