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) >
