mappingItems method
Parser<({List<ExpressionNode> keys, List<PatternNode> patterns, String? rest})>
mappingItems()
inherited
Implementation
Parser<
({List<ExpressionNode> keys, List<PatternNode> patterns, String? rest})
>
mappingItems() =>
seq2(
[
ref0(mappingDoubleStarRest),
ref0(keyValPattern),
].toChoiceParser().plusSeparated(ref1(token, ',')),
ref1(token, ',').optional(),
).map2((seq, _) {
final keys = <ExpressionNode>[];
final patterns = <PatternNode>[];
String? rest;
for (final item in seq.elements) {
final key = item.key;
final pat = item.pat;
if (item.rest != null) {
rest = item.rest;
} else if (key != null && pat != null) {
keys.add(key);
patterns.add(pat);
}
}
return (keys: keys, patterns: patterns, rest: rest);
});