What about a slide out tab for my device app
Secret menu

On Fri, Oct 11, 2019, 7:18 AM Pascal Proulx (Jira) <[email protected]> wrote:

>
>     [
> https://issues.apache.org/jira/browse/FREEMARKER-107?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16949490#comment-16949490
> ]
>
> Pascal Proulx edited comment on FREEMARKER-107 at 10/11/19 2:17 PM:
> --------------------------------------------------------------------
>
> I see what you mean. I haven't thought about that case because I
> completely avoided using positional arguments with macros, so it wouldn't
> be an issue for me, and would have created issues, you're probably right on
> that. It was never even a question.
>
> Even for functions: what I did for many functions was to take a simple
> "args" map instead of positional arguments - or after one or two positional
> arguments - and often would reuse an argument as both the args map and as a
> positional argument using a type check (args?is_hash_ex, args?is_string,
> ...) - sometimes you see this in javascript libraries - because parameter
> names become essential for readability in *.ftl when you go past 2-3
> parameters (because you don't get IDE hints about parameter names like Java
> code in Eclipse or IDEA)... all to say I tried to avoid positional
> arguments. Similarly I'm not sure I will use ?spread_args as much with
> functions, but will see.
>
>
> was (Author: pplx):
> I see what you mean. I haven't thought about that case because I
> completely avoided using positional arguments with macros, so it wouldn't
> be an issue for me, and would have created issues, you're probably right on
> that. It was never even a question.
>
> Even for functions: what I did for many functions was to take a simple
> "args" map instead of positional arguments - or after one or two positional
> arguments - and often would reuse an argument as both the args map and as a
> positional argument using a type check (args?is_hash_ex, args?is_string,
> ...) - sometimes you see this in javascript libraries - because parameter
> names become essential for readability in *.ftl when you go past 2-3
> parameters... all to say I tried to avoid positional arguments. Similarly
> I'm not sure I will use ?spread_args as much with functions, but will see.
>
> > Hash expansion to macro arguments (Python **kwargs style)
> > ---------------------------------------------------------
> >
> >                 Key: FREEMARKER-107
> >                 URL:
> https://issues.apache.org/jira/browse/FREEMARKER-107
> >             Project: Apache Freemarker
> >          Issue Type: New Feature
> >          Components: engine
> >    Affects Versions: 2.3.28
> >            Reporter: Pascal Proulx
> >            Priority: Major
> >
> > Hello,
> > We heavily rely on Freemarker macros to build a helper template API, but
> have had to make large workarounds for passing contents of hashes as macro
> arguments, for several years. (In truth I should have made this ticket much
> sooner!)
> > It would help greatly simplify our work to have hash expansion to macro
> arguments, like this:
> > {code:java}
> > <#macro myMacro arg1 arg2 arg3="value3">...</#macro>
> > <#assign myHash = {"arg1":"value1", "arg2":"value2"}>
> > <@myMacro **myHash/><#-- the hash contents are passed as parameters,
> instead of the hash itself -->
> > {code}
> > This exists in Python:
> > {code:java}
> > def test_var_args_call(arg1, arg2, arg3):
> >     pass
> > kwargs = {"arg3": 3, "arg2": "two"}
> > test_var_args_call(1, **kwargs)
> > {code}
> > Essentially the hash contents fill in any arguments not explicitly
> specified.
> > For the case where arguments are specified in addition to the hash, you
> may need to decide on a good syntax, e.g.:
> > {code:java}
> > <@myMacro arg1="value1" **myHash/>{code}
> > This example doesn't have much precedent in freemarker syntax but is
> fairly understandable.
> > Although we don't need it nearly as much, the same could be done with
> lists and function arguments:
> > {code:java}
> > <#function myFunc arg1 arg2>...</#function>
> > <#assign myList = ["val1", "val2"]>
> > ${myFunc(*myList)}
> > <#assign myList = ["val2"]>
> > ${myFunc("val1", *myList)}
> > {code}
> > Again similar to Python:
> > {code:java}
> > def test_var_args_call(arg1, arg2, arg3):
> >     pass
> > args = ("two", 3)
> > test_var_args_call(1, *args)
> > {code}
> > You might want this for consistency, although in practice the hash
> expansion will be many times more useful to us.
> > If there's a lack a manpower I could try to see what I can do digging
> into the source, but wanted to bring this up for discussion first. It
> doesn't appear hard to implement to dump a hash into the macro args map,
> but there is defining the syntax.
> > We use Freemarker 2.3.28 at the moment.
> > Thank you
>
>
>
> --
> This message was sent by Atlassian Jira
> (v8.3.4#803005)
>

Reply via email to