patternArguments method
Parser<({List<String> kwdNames, List<PatternNode> kwdPatterns, List<PatternNode> pos})>
patternArguments()
inherited
Pattern arguments in class pattern.
Implementation
Parser<
({
List<PatternNode> pos,
List<String> kwdNames,
List<PatternNode> kwdPatterns,
})
>
patternArguments() =>
seq2(
[
ref0(keywordPatternArg),
ref0(pythonPattern).map((p) => (kwd: null, pat: p)),
].toChoiceParser().plusSeparated(ref1(token, ',')),
ref1(token, ',').optional(),
).map2((seq, _) {
final pos = <PatternNode>[];
final kwdNames = <String>[];
final kwdPatterns = <PatternNode>[];
for (final item in seq.elements) {
if (item.kwd case final kwd?) {
kwdNames.add(kwd);
kwdPatterns.add(item.pat);
} else {
pos.add(item.pat);
}
}
return (pos: pos, kwdNames: kwdNames, kwdPatterns: kwdPatterns);
});