On Sat, Mar 24, 2018 at 10:41 AM, Daniel Dekany <[email protected]> wrote: > 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)
Right. Will do. Regards, Woonsan > >> 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 >
