Saturday, November 10, 2018, 3:08:14 PM, Denis Bredelet wrote: > Hi, > > Le 9 novembre 2018 à 22:36, Christoph Rüger <[email protected]> a écrit : > > Am Fr., 9. Nov. 2018 um 22:55 Uhr schrieb Daniel Dekany <[email protected] > : > > It's certainly tricky, but as far as I see possible (but then, who > > knows what will one find when actually working on it). It's also a > feature missing a lot. It's especially missing for #list (I know that > you need it for something else), because if you filter the items > inside #list with #if-s, then #sep, ?hasNext, etc. will not be usable. > > Let me say that I disagree here. > > I do not think that closures are required for FreeMarker, nor that they are a > good idea. > > If we add new features to the FreeMarker *tempate engine* I would > rather we focus on multi-part macro body rather than an advanced language > feature like closures. > > You can add ?filter and ?map if you want, a simple expression as parameter > should be enough.
Yes, as I said, we certainly start with only allowing lambdas in ?filter/?map, also certainly in ?contains. Multi-part macro body is also planned. Means, I know it definitely should be added, but who knows when that's done... I mean, it's like that for what, a decade? (: It's not even decided what it exactly does, as there are many ways of approaching this. (I have my own idea about what the right compromise would be, but others has other ideas...) Filtering lists bothers me because the template language should be (and somewhat indeed is) specialized on listing things on fancy ways that used to come up when generating document-like output. (If it doesn't do things like that, you might as well use a general purpose language.) Thus, that filter is unsolved (filtering with #if is verbose and spoils #sep etc.) bothers me a lot. BTW, ?filter and ?map is also especially handy in our case as FreeMarker doesn't support building new sequences (sequences are immutable). Although it has sequence concatenation with `+`, it's not good for building a sequence one by one, unless the sequence will be quite short. > Cheers, > -- Denis. -- Thanks, Daniel Dekany
