substituteArgs function

String substituteArgs(
  1. String content,
  2. List<String> args
)

Substitutes positional arguments into a template body.

Supports:

  • $1, $2, ... positional args
  • $@ and $ARGUMENTS for all args joined by a space
  • ${N:-default} for arg N with a default when missing/empty
  • ${@:N} for args from N onwards
  • ${@:N:L} for L args starting at N

Implementation

String substituteArgs(String content, List<String> args) {
  final allArgs = args.join(' ');
  return content.replaceAllMapped(
    RegExp(
      r'\$\{(\d+):-([^}]*)\}|\$\{@:(\d+)(?::(\d+))?\}|\$(ARGUMENTS|@|\d+)',
    ),
    (match) => _substituteMatch(match, args, allArgs),
  );
}