Saturday, March 24, 2018, 2:44:17 PM, Woonsan Ko wrote: > 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.)
OK, I see the problem. I haven't pushed the last merge commit in the 2.3 branch... sorry! So only the 2.3-gae branch was up to date on Git. (The linked binaries were fine though.) > (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?) But should work, except if I screw up and forgot to push one of them, like now... > 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! Note that the square bracket *tag* syntax and that it can be activated with [#ftl] exists for a very long time. I will update the related Manual page in a minute... >> 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? Let's not forget digging up the thread where it was decided. I mean, there are some pro/cons mentioned there. >>> 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"? In theory you should test both, but the differences are so tiny (GAE has a little change so that it can run on Google App Engine), it shouldn't mater. (See also: https://freemarker.apache.org/sourcecode.html) > 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 >> > -- Thanks, Daniel Dekany
