parse<E> static method
List<Range<E> >
parse<E>(
- String source, {
- String rangeSeparator = '–',
- String nonConsecutiveSeparator = ', ',
- List<
StringParser< ? chain,E> >
Parses source as a compressed range list.
Example:
RangeIterableExtension.parse('C–E♭, G♯–B', chain: Note.parsers) == [
(from: Note.c, to: Note.e.flat),
(from: Note.g.sharp, to: Note.b),
]
Implementation
static List<Range<E>> parse<E>(
String source, {
String rangeSeparator = '–',
String nonConsecutiveSeparator = ', ',
List<StringParser<E>>? chain,
}) => source
.split(nonConsecutiveSeparator)
.map((range) {
final List(:first, :last) = range.split(rangeSeparator);
final from = first.trim();
final to = last.trim();
return (
from: (chain?.parse(from) ?? from) as E,
to: (chain?.parse(to) ?? to) as E,
);
})
.toList(growable: false);