On Sat, Mar 24, 2018 at 3:21 AM, Daniel Dekany <[email protected]> wrote: > Saturday, March 24, 2018, 3:13:06 AM, Woonsan Ko wrote: > >> When I tested with freemarker-2.3.28-incubating-SNAPSHOT.jar, which I >> built and install it to my local maven repo from the latest "2.3" >> branch myself, in my applications, I haven't found any regressions. >> My applications are rather simpler probably than others as they simply >> render model objects passed from request attributes through >> FreeMarkerServlet. >> But when I tried the new features and bug fixes [1], I think I found >> somethings (perhaps there could be my misunderstandings): >> >> 1. The template example in >> https://freemarker.apache.org/builds/fm2.3.28/ref_specvar.html#ref_specvar_get_optional_template >> >> <#assign optTemp = .get_optional_template('some.ftl')> >> <#if optTemp.exists> >> >> But if the 'some.ftl' doesn't exist, optTemp.exists fails as it's >> null. So I ended up changing it to this: >> >> <#assign optTemp = .get_optional_template('some.ftl')> >> <#if optTemp?? && optTemp.exists> > > That's bizarre. It works for me. Also for the test suite... that > passes there, right? (It can't even be explained by accidentally using > 2.3.27, as there .get_optional_template is parsing (syntax) error.)
Perhaps my build might be wrong. I did the following locally to build fresh and install it to my local maven repo. (Yesterday, I used my forked/forked GitHub branch, which could have caused the issue.) (move to a temp folder) $ git clone https://git-wip-us.apache.org/repos/asf/incubator-freemarker.git $ cd incubator-freemarker/ $ git checkout 2.3 (edit build.properties) $ git log --oneline | head -n 2 edefaa2f Merge remote-tracking branch 'origin/2.3-gae' into 2.3 01294537 Cleaned up more lexer/parser logic ... $ ant clean maven-install (confirm the log installing the jar and pom files to my maven repo to compare with deployed jar later) When I tested with this today, ${.version} printed: "version: 2.3.28-nightly_20180324T130919Z-incubating". Could this local build cause a problem? (I saw differences between "2.3" and "2.3-gae". See below. So I probably should have built "2.3-gae" branch?) Anyway, in my testing with "2.3" build, I needed optTemp?? additionally. > >> 2. Square bracket syntax through ftl directive >> >> It reads, "This directive also determines if the template uses angle >> bracket syntax (e.g. <#include 'foo.ftl'>) or square bracket syntax >> (e.g. [#include 'foo.ftl']). Simply, the syntax used for this >> directive will be the syntax used for the whole template, regardless >> of the FreeMarker configuration settings." [2] >> >> I applied it to an included .ftl template like this: >> >> [#ftl output_format="HTML"] >> [="Hello"] >> ${"Hello"} >> >> It prints: [="Hello"] Hello, >> not: Hello ${"Hello"} > > There are two independent settings here: tag syntax and interpolation > syntax. It's mere coincidence that both has "square bracket" in their > names. [#ftl] only sets the first. I will clarify that in the I see. When I tried this now, [#ftl output_format="HTML"] [#assign a=[1,2,3]] [#list a as i]${i}[#sep],[/#list] [="Hello"] ${"Hello"} I got: 1,2,3 [="Hello"] Hello Thanks for clarification! > documentation. Or, it's a warning sign that we should rather use > {{exp}}, as that doesn't have "square brackets" in it. Perhaps. ;-) I recently had a chance to look around other templating libraries using the mustache as I have seen people loving it. I didn't like the usages there in directives. For example, {{#if user}} {{user.name}} {{/if}}. It's hard for me complete the if, ending with {{/if}}, which is too much. ;-) But the interpolation part (e.g, {{user.name}}) seems okay to me. So, yes, I'm fine with mustache expression for interpolation and it might be less confusing in this specific case. What do others think? > >> 3. split with an empty string >> >> It says, "Bug fixed: When string?split(separator) is called with "" as >> the argument, the string will be split to characters now. Earlier it >> has thrown an IllegalArgumentException (unless the r flag was >> specified)." >> But when I tried it, it throws an IllegalArgumentException: >> >> <#assign a="hello"?split("l")> > ==>> >> java.lang.IllegalArgumentException: The separator string has 0 length >> at freemarker.template.utility.StringUtil.split(StringUtil.java:752) > > Huh? "l" isn't even 0 long! Or you meant to copy-paste `?split("")` > there? And yet again, it works for me here. Though this at least can > be that you are accidentally using 2.3.27 (try ${.version}). It was a copy-paste error. Still I got the error: "java.lang.IllegalArgumentException: The separator string has 0 length at freemarker.template.utility.StringUtil.split(StringUtil.java:752)" Now I realize that "2.3" branch is different from "2.3-gae" branch: - https://github.com/apache/incubator-freemarker/blob/2.3/src/main/java/freemarker/template/utility/StringUtil.java#L752 - https://github.com/apache/incubator-freemarker/blob/2.3-gae/src/main/java/freemarker/template/utility/StringUtil.java#L753 Perhaps, should I have built/test from "2.3-gae"? Thanks in advance! Regards, Woonsan > >> Please let me know if I miss or misinterpret somethings. >> >> Cheers, >> >> Woonsan >> >> [1] https://freemarker.apache.org/builds/fm2.3.28/versions_2_3_28.html >> [2] >> https://freemarker.apache.org/builds/fm2.3.28/ref_directive_ftl.html >> >> On Fri, Mar 23, 2018 at 4:08 AM, Daniel Dekany <[email protected]> wrote: >>> Friday, March 23, 2018, 3:33:39 AM, Woonsan Ko wrote: >>> >>>> Great to see the real release without "incubating" mark soon! >>> >>> In theory it was decided 2 days ago, but I saw nothing about the board >>> meeting so far. I guess they are overburdened with the May elections >>> and all that. >>> >>>> Also ! I've just read the Change log and everything is awesome! >>>> I'll just try out the snapshot binary tomorrow in our applications to >>>> see if there's any regression just in case. >>> >>> Great, thanks! >>> >>>> Cheers, >>>> >>>> Woonsan >>>> >>>> >>>> On Tue, Mar 20, 2018 at 6:39 PM, Daniel Dekany <[email protected]> wrote: >>>>> Before we start a VOTE on releasing 2.3.28, it would be good if more >>>>> of you can test it, or otherwise review the upcoming 2.3.28! The main >>>>> point in this phase is to catch technical issues. >>>>> >>>>> If you intend to help, but won't have time for it in the coming few >>>>> days, please indicate that, so that I know that I should wait! >>>>> >>>>> Change log (so far, but I don't plan to add more): >>>>> https://freemarker.apache.org/builds/fm2.3.28/versions_2_3_28.html >>>>> >>>>> Binary release artifacts: >>>>> https://dist.apache.org/repos/dist/dev/incubator/freemarker/engine/2.3.28-incubating-SNAPSHOT/binaries/ >>>>> >>>>> Source release artifacts: >>>>> https://dist.apache.org/repos/dist/dev/incubator/freemarker/engine/2.3.28-incubating-SNAPSHOT/source/ >>>>> >>>>> The Maven artifacts are available from the Apache snaphsot repository: >>>>> >>>>> <repository> >>>>> <id>apache-snapshot-repository</id> >>>>> >>>>> <url>https://repository.apache.org/content/repositories/snapshots/</url> >>>>> <releases><enabled>false</enabled></releases> >>>>> <snapshots><enabled>true</enabled></snapshots> >>>>> </repository> >>>>> >>>>> under the coordinates: >>>>> >>>>> <groupId>org.freemarker</groupId> >>>>> <artifactId>freemarker</artifactId> >>>>> <version>2.3.28-incubating-SNAPSHOT</version> >>>>> >>>>> and for the Google App Engine compatible (GAE) version: >>>>> >>>>> <groupId>org.freemarker</groupId> >>>>> <artifactId>freemarker-gae</artifactId> >>>>> <version>2.3.28-incubating-SNAPSHOT</version> >>>>> >>>>> The ASF Board will decide tomorrow (21th) if FreeMarker can graduate. >>>>> If everything goes well, this release won't have "incubating" in its >>>>> version number. This will be the first such release since mid 2015 >>>>> (2.3.23). >>>>> >>>>> -- >>>>> Thanks, >>>>> Daniel Dekany >>>>> >>>> >>> >>> -- >>> Thanks, >>> Daniel Dekany >>> >> > > -- > Thanks, > Daniel Dekany >
