format method

String format({
  1. String rangeSeparator = '–',
  2. String nonConsecutiveSeparator = ', ',
  3. StringFormatter<E>? formatter,
})

Formats this compressed range list into a readable string representation.

The function expects the given E type to have a proper implementation of operator ==.

Example:

[
  (from: Note.c, to: Note.e.flat),
  (from: Note.g.sharp, to: Note.b),
].format() == 'C–E♭, G♯–B'

Implementation

String format({
  String rangeSeparator = '–',
  String nonConsecutiveSeparator = ', ',
  StringFormatter<E>? formatter,
}) => map(
  (range) => [range.from, if (range.from != range.to) range.to]
      .map(formatter?.format ?? (element) => element.toString())
      .join(rangeSeparator),
).join(nonConsecutiveSeparator);