parseFeats static method

({String? degree, String? gender, String? number}) parseFeats(
  1. String feats
)

Parses Gender, Number, and Degree from a FEATS string in one pass, e.g. "Case=Nom|Gender=Masc|Number=Sing|Degree=Pos".

Implementation

static ({String? gender, String? number, String? degree}) parseFeats(String feats) {
  if (feats == '_') return (gender: null, number: null, degree: null);
  String? gender, number, degree;
  for (final part in feats.split('|')) {
    final idx = part.indexOf('=');
    if (idx == -1) continue;
    switch (part.substring(0, idx)) {
      case 'Gender': gender = part.substring(idx + 1);
      case 'Number': number = part.substring(idx + 1);
      case 'Degree': degree = part.substring(idx + 1);
    }
  }
  return (gender: gender, number: number, degree: degree);
}