Sounds good. Looks like lots of historical quirks are removed, which is
probably. Didn't know about a lot of the things you mentioned :) We will
see in practise how this will work out I guess.

2017-07-02 1:13 GMT+02:00 Daniel Dekany <ddek...@apache.org>:

> So this is some easy to understand stuff, compared to the totally
> unpopular "[FM3] Call syntax, positional and named parameters" thread
> at least (and silence is approval, for the sake of progress).
>
> Note that all of these changes can be done automatically with the
> FM2-to-FM3 converter (which is work in progress).
>
> Note that anything between ` characters is code quotation, and the
> ` character itself is not part of the proposed syntax.
>
> So, the proposed changes:
>
> - Switch to camel case everywhere. This was already discussed months
>   ago, I'm just saying it again. Other than that convention has become
>   overwhelmingly popular in the Web and Java world, one reasons is
>   that the Java API-s you call from the template uses that convention
>   anyway. Also, remove the namingConvention setting. If someone needs
>   a different convention (snake_case, typically), they should use the
>   planned custom dialect feature. It's cleaner and more powerful that
>   way, for example, you could even use non-English names.
>
> - Remove the long deprecated #{}.
>
> - Remove `=` as an alias to `==`. This removes ambiguities caused by
>   that passing parameters by name and assignment also uses `=` with a
>   different meaning.
>
> - Remove `&` and `|`, as they are just aliases to `&&` and `||`. This
>   will also free up these symbols for future usages.
>
> - Add `and` and `or` as keywords. `and` is useful when you can't use
>   `&&` because it's not well formed XML/HTML (which matters as some
>   real-world applications impose such strange restrictions on
>   templates... it's totally weird, but that's how it is). `or` is only
>   for the sake of consistency. FM2 `\and`, `&amp;&amp;` would be
>   removed (which is kind of funny, as they are added in 2.3.27, which
>   is still under development).
>
> - Regarding the aliases of the `<`, `<=`, `>`, `>=` operators:
>   - Replace `gte` and `lte` with `ge` and `le`, to be more similar to
>     XSLT and XPath.
>   - Remove `\gt`, `\lt`, `\gte`, `\lte`. They are deprecated for a long
>     time.
>   - Remove support for `&gt;`, `&lt;`, `&gt;=`, `&lt;=`. Some may
>     point out that these were practical when you enter tags into WYSIWYG
>     editors (i.e., your tags get mangled by unwanted escaping).
>     Problem is, it has never worked 100% correctly for those
>     applications, as other characters may be escaped there as well,
>     such as an `&` in a string literal, or even quotation marks. So to
>     support that use case, we will need to add a feature that properly
>     un-escapes everything (even tag delimiters!), instead of adding
>     hacks to the expression syntax that only work around the problem
>     sometimes.
>
> - Fix `exp!exp` precedence. In FM2 `a + b!c + d` means `a + b!(c + d)`,
>   which is just wrong. It should mean `a + (b!c) + d`, but it can't be
>   fixed there as it's not a backward compatible change.
>
> - Less liberal comment syntax inside expression.
>   In FM2, inside expressions (as opposed to between tags), you can use
>   all of these as comments, regardless of the tag syntax: `<#-- -->`,
>   `[#-- --]`, and surprisingly even `<!-- -->`. In FM3, you could only
>   use either `<#-- -->` or `[#-- --]`, whichever matches the tag
>   syntax of the template.
>
> - Interpolations shouldn't be string-escaped anymore in string
>   literals. In FM2, when you have an interpolation inside a string
>   literal, its content has to be properly backslash escaped, just like
> normal
>   characters in the string, for example:
>   `${"A backslash: \\. Another backslash: ${'\\\\'}"}`
>   or `${"Foo ${\"Bar\"}"}`
>   This is not very user friendly IMO, and also complicates parsing
>   considerably (bad for us, bad for 3rd party tooling). I have checked,
>   and nor Groovy nor Kotlin does this. So in FM3 you had to write
>   this:
>   `${"A backslash: \\. Another backslash: ${'\\'}"}`
>   or `${"Foo ${"Bar"}"}`
>
> - SQL-like quotation character escaping in raw strings literal. Raw string
>   literals are like r"\d+" or r'\d+'; both literally means \d+. You
>   can include any characters without escaping, in fact there's no
>   escaping inside raw string literals. Problem is, then you can't
>   include the literal quotation character in the content, as there's
>   no way escaping it. I propose we allow that like this:
>   r'It''s an example.' or r"This is ""quoted""."
>
> --
> Thanks,
>  Daniel Dekany
>
>


-- 
Christoph Rüger, Geschäftsführer
Synesty <https://synesty.com/> - Anbinden und Automatisieren ohne
Programmieren - Automatisierung, Schnittstellen, Datenfeeds

Xing: https://www.xing.com/profile/Christoph_Rueger2
LinkedIn: http://www.linkedin.com/pub/christoph-rueger/a/685/198

-- 
Synesty GmbH
Moritz-von-Rohr-Str. 1a
07745 Jena
Tel.: +49 3641 559649
Fax.: +49 3641 5596499
Internet: http://synesty.com

Geschäftsführer: Christoph Rüger
Unternehmenssitz: Jena
Handelsregister B beim Amtsgericht: Jena
Handelsregister-Nummer: HRB 508766
Ust-IdNr.: DE287564982

Reply via email to