Re: [vote] Opinions about conditional built-in names?
Woonsan Ko <[email protected]> Fri, 05 Jun 2015 09:53:53 -0400
| Newsgroups | gmane.comp.web.freemarker.devel |
|---|---|
| Message-ID | <[email protected]> |
+1 for: ?thenElse / ?then_else Just changed my mind. It seems clearer than "then". Woonsan On 6/5/15 9:49 AM, Raymond Auge wrote: > +1 for: ?thenElse / ?then_else > = > = > = > On Fri, Jun 5, 2015 at 2:31 AM, Daniel Dekany <[email protected] > <mailto:[email protected]>> wrote: > = > For now I have renamed > = > exp?choose(whenTrue, whenFalse) > = > to > = > exp?then(whenTrue, whenFalse) > = > because this time that was the most popular option (last year it was > ?choose for some reason). I still wonder if we should sacrifice some > terseness for being more understandable with: > = > exp?then_else(whenTrue, whenFalse). > = > If you hate to type "_", take into account that in 2.3.23 you can > already write templates in camel case, which will be probably the > recommended convention sooner or later. Then you have: > exp?thenElse(whenTrue, whenFalse) > = > Opinions? > = > -- > Thanks, > Daniel Dekany > = > = > Wednesday, June 3, 2015, 12:58:56 AM, Daniel Dekany wrote: > = > > Wednesday, June 3, 2015, 12:00:09 AM, Jaime Garza wrote: > > > >> thenElse is not in the style of other composite words for > >> built-ins, like cap_first, right? The style dictates ?then_else > > > > Yes, I meant then_else. (Or... in fact, in 2.3.23 you can use camel > > case as well, but then you need to use camel case for everything > > that's defined by Freemarker.) > > > >> Personally I like boolean?if(true-expr, false-expr) > > > > So my concern with ?if is this that loggedIn?if(user.name > <http://user.name>, "unknown") > > can be easily misread like this, as you read it left-to-right: (We > > are) logged in IF user.name <http://user.name> is "unknown". At > last the "logged in IF > > user.name <http://user.name>" part is especially easy to read into > it, and is already the > > opposite of what the expression means (IF logged in then user.name > <http://user.name>). > > > >> Very concise. > >> > >> Jaime Garza > >> > >> -----Original Message----- > >> From: Daniel Dekany [mailto:[email protected] > <mailto:[email protected]>] > >> Sent: Tuesday, June 02, 2015 2:20 PM > >> To: FreeMarker-devel > >> Subject: Re: [Freemarker-devel] [vote] Opinions about conditional > built-in names? > >> > >> Tuesday, June 2, 2015, 1:54:24 PM, Raymond Auge wrote: > >> > >>> Having reviewed those and due to my preferring readability over > >>> anything else, I would still lean toward: > >>> > >>> someBoolean?then(whenTrue, whenFalse) > >>> > >>> But would actually prefer the more expressive: > >>> > >>> someBoolean?ifelse(whenTrue, whenFalse) > >> > >> Then rather someBoolean?thenElse(whenTrue, whenFalse), isn't it? > >> Though that even longer... > >> > >> What should I notice in that Wikipedia article? > >> > >> -- > >> Thanks, > >> Daniel Dekany > >> > >> > >>> I'd learn to deal with the first of course. > >>> > >>> - Ray > >>> > >>> On Tue, Jun 2, 2015 at 7:47 AM, Raymond Auge > <[email protected] <mailto:[email protected]>> wrote: > >>> I lean to "then". > >>> > >>> But before deciding maybe a quick look over these: > http://en.wikipedia.org/wiki/%3F: > >>> > >>> - Ray > >>> > >>> On Tue, Jun 2, 2015 at 3:01 AM, Daniel Dekany > <[email protected] <mailto:[email protected]>> wrote: > >>> OK, so that's like a vote for "then". Anyone else has an opinion?= Or > >>> even just a vote on the name you prefer? > >>> > >>> someBoolean?then(whenTrue, whenFalse)someBoolean?then(whenTrue, > whenFalse) > >>> or > >>> someBoolean?choose(whenTrue, whenFalse) > >>> or > >>> something else? > >>> > >>> -- > >>> Thanks, > >>> Daniel Dekany > >>> > >>> > >>> Monday, June 1, 2015, 9:41:49 PM, Woonsan Ko wrote: > >>> > >>>> On 6/1/15 3:26 PM, Daniel Dekany wrote: > >>>>> Sunday, May 31, 2015, 7:50:20 PM, Woonsan Ko wrote: > >>>>> > >>>>>> I personally prefer having the default value option inside the > >>>>>> parenthesis, without having to depend on the default value > after '!'. > >>>>>> So, I like the idea the odd number of parameters for a > default value. > >>>>>> > >>>>>> Regarding the original question about 'switch' and 'choose', > I like the > >>>>>> 'switch' very much, but I'm not sure if 'choose' is a good > name for > >>>>>> ternary operator. In XSL, 'choose' means just one choice of the > >>>>>> 'switch'. > >>>>> > >>>>> Actually, in XSLT "choose" stands for "switch" (and "when" > stands for > >>>>> "case"). But that just proves how confusing this word is... > >>>> > >>>> Oh you're right. Long time passed after I wrote XSL files last. > >>>> > >>>>> > >>>>>> 'choose' sounds like related to one of the 'multiple' choices > >>>>>> to me. > >>>>> > >>>>> Well, I'm also unhappy with "choose", I just couldn't find bett= er > >>>>> yet... What do you think about "then". Apart from the lack of > "else" > >>>>> in it, it reads quite fluently: loggedIn?then(user.name > <http://user.name>, "unknown"). > >>>> > >>>> Yeah, "then" sounds better to me than anything else. > >>>> > >>>>> > >>>>>> Another option to consider might be 'iif' [1], which seems a > bit clearer > >>>>>> to me than 'either' and others. > >>>>>> > >>>>>> someBoolean?iif(whenTrue, whenFalse) > >>>>>> > >>>>>> Just my two cents, > >>>>> > >>>>> I have played that idea back then, but I'm afraid very few > knows what > >>>>> does "iif" stands for. Also loggedIn?iif(user.name > <http://user.name>, "unknown") can be > >>>>> easily misread like: we are logged in IF user.name > <http://user.name> is "unknown". > >>>> > >>>> Agreed. Not sound fluent. > >>>> > >>>> Kind regards, > >>>> > >>>> Woonsan > >>>> > >>>>> > >>>>>> Woonsan > >>>>>> > >>>>>> [1] http://en.wikipedia.org/wiki/IIf > >>>>>> > >>>>>> On 5/30/15 6:02 AM, Daniel Dekany wrote: > >>>>>>> And regarding the semantics of ?switch... as it sands now, > if there's > >>>>>>> no matching choice, that will be an exception that says: > >>>>>>> > >>>>>>> The value before ?switch(case1, value1, case2, value2, > ...) didn't > >>>>>>> match any of the case parameters, and there was no default > value > >>>>>>> parameter (an additional last parameter) either. > >>>>>>> > >>>>>>> So, if you have an odd number of parameters, then the last > one is like > >>>>>>> the default branch of switch in Java. > >>>>>>> > >>>>>>> I have also considered just returning null if there's no > match, and > >>>>>>> then one can write ?switch(...)!theDefault, but then if someo= ne > >>>>>>> doesn't give a default, the error messages will just say that > >>>>>>> ?switch(...) has evaluated to null/missing, which many users > won't > >>>>>>> understand why's happening. Also it has the same problems as > >>>>>>> ?then(this)!that had. > = > = > ---------------------------------------------------------------------= --------- > _______________________________________________ > FreeMarker-devel mailing list > [email protected] > <mailto:[email protected]> > https://lists.sourceforge.net/lists/listinfo/freemarker-devel > = > = > = > = > -- = > *Raymond Aug=E9* > <http://www.liferay.com/web/raymond.auge/profile> (@rotty3000) > Senior Software Architect *Liferay, Inc.* > <http://www.liferay.com> (@Liferay) > Board Member & EEG Co-Chair, OSGi Alliance <http://osgi.org> (@OSGiAllian= ce) > = > = > -------------------------------------------------------------------------= ----- > = > = > = > _______________________________________________ > FreeMarker-devel mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/freemarker-devel > = -- = [email protected] www.onehippo.com Boston - 745 Atlantic Ave, 8th Floor, Boston MA 02111 Amsterdam - Oosteinde 11, 1017 WT Amsterdam US +1 877 414 4776 (toll free) Europe +31(0)20 522 4466 ---------------------------------------------------------------------------= ---