toArgumentsList method

List<String> toArgumentsList({
  1. bool abbreviateFlags = true,
  2. bool abbreviateParameters = false,
})

Converts this instances to a String line.

The inverse of parse.

Implementation

List<String> toArgumentsList(
    {bool abbreviateFlags = true, bool abbreviateParameters = false}) {
  var arguments = <String>[];

  var keysAbbreviations = abbreviateFlags || abbreviateParameters
      ? this.keysAbbreviations
      : abbreviations;

  for (var f in flags) {
    if (abbreviateFlags) {
      var abbrev = keysAbbreviations[f];
      if (abbrev != null) {
        f = abbrev;
      }
    }
    arguments.add('-$f');
  }

  for (var e in parameters.entries) {
    var k = e.key;

    if (abbreviateParameters) {
      var abbrev = keysAbbreviations[k];
      if (abbrev != null) {
        k = abbrev;
      }
    }

    var v = e.value;

    if (v is Iterable) {
      for (var val in v) {
        arguments.add('--$k');
        arguments.add('$val');
      }
    } else {
      arguments.add('--$k');
      arguments.add('$v');
    }
  }

  return arguments;
}