I want to define a Template Toolkit MACRO with few arguments, and have at least one of them with a default value if no argument is given in that position. Is it possible? My idea is to have something like this (similar to Python syntax/logic):
[%-
MACRO my_macro( arg1, arg2, arg3='my_default_value') BLOCK;
# arg3 value is 'my_default_value' if nothing is passed as argument in that position, otherwise it must use arg3 value given when called.
END;
-%]
And then to call the macro:
# In this case, arg3 inside the macro must be 'my_default_value'
my_macro('my_value1', 'my_value2');
# In this case, arg3 inside the macro must be 'my_value3'
my_macro('my_value1', 'my_value2', 'my_value3');
As you've no doubt found, your suggested syntax throws a syntax error. Because TT doesn't support that.
You can take the approach that Håkon takes, but if you want something a little simpler, that doesn't require a
[% PERL %]block, you can do something like this: