Coming back with another request for a substitution... I tried using a path join substitution with a filename that depends on a launch configuration. The path join substitution does not allow one to concatenate parts of a filename. It ended up using a python expression.
And then, this could be used in other practical ways, for example, to create a xacro substitution
class XacroSubstitution(Command):
def __init__(
self,
filepath: SomeSubstitutionsType,
arg_str: SomeSubstitutionsType = "", # xacro arguments that are passed as a launch argument
arg_dict: Dict = None, # xacro arguments that are defined in the launch file
):
command = [FindExecutable(name="xacro"), " ", filepath, " "]
arg_str, arg_dict = normalize_to_list_of_substitutions(arg_str), arg_dict or {}
arg_list = [StringSubstitution([key, value], sep=":=") for key, value in arg_dict.items()]
command.extend(StringSubstitution(arg_list + arg_str, sep=" "))
super().__init__(command)
I did the same with Python expression for ".sdf". That was the exact thing I tried, to use a list with TextSubstitution, but then I discovered that it was not possible. Nice suggestion!
Feature request
Feature description
Coming back with another request for a substitution... I tried using a path join substitution with a filename that depends on a launch configuration. The path join substitution does not allow one to concatenate parts of a filename. It ended up using a python expression.
Implementation considerations
I would have hoped that text substitution could take multiple texts so that I could do
But this is not compatible, given how text substitution was put together.
So, how about having a substitution that concatenates strings and then also having the separator parameterized?
In the simple case, one would do
And then, this could be used in other practical ways, for example, to create a xacro substitution