Ondra Žižka created FREEMARKER-77:
-------------------------------------

             Summary: expr!! as a shorthand for (expr)!
                 Key: FREEMARKER-77
                 URL: https://issues.apache.org/jira/browse/FREEMARKER-77
             Project: Apache Freemarker
          Issue Type: New Feature
            Reporter: Ondra Žižka
            Priority: Minor



Also, before I open an issue, what would be your view on a.very.long.expr!! 
being a shorthand for {{(a.very.long.expr)!}} ?  The effect of !! would go back 
to the "root" of the expression, i.e. at the start of the part ending with !! . 
Not sure if that would have clear enough rules, though.

The use case is, that often there is a long expression, (again, getting 
something from a deep graph), and anywhere on the path something can be 
missing. The only relevant thing is at the end. And the parentheses make the 
expression less readable.

Example made-up situatuon:

{code}
(foo.bar.baz[(foo.transform((a.very.long.expression())!"defaultResult"))!fallbackKey(context)])!"-"
{code}

1) The long expression can be missing at any point, so the transform would get 
some default value.
2) The transform may return null if the argument is somehow improper. For that 
case, the {{fallbackKey()}} would return a key as per the {{context}}.
3) If the map doesn't contain the entry or any of {{foo.bar.baz}} is missing, 
the whole expression would turn into {{"-"}}.

{code}
foo.bar.baz[foo.transform(a.very.long.expression()!!"defaultResult")!!fallbackKey(context)]!!"-"
{code}

Ok, this one is perhaps a candidate for splitting into few steps. But it's just 
for illustration.

Does it make sense? Is it doable?
Marking it as minor as it's not really too much pain, just would be nice to 
have.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to