generateEnum function
String
generateEnum(
- EnumElement c
)
Implementation
String generateEnum(EnumElement c) {
final values = c.fields.where((f) => f.isEnumConstant);
return '''
extension ${c.name}Match on ${c.name} {
T match<T>({
${values.map(namedFunctionArgument).map((n) => 'required $n').join(',\n')}
}) {
final v = this;
${values.map((v) => enumValueMatch(c, v)).join('\n')}
throw Exception('${c.name}.match failed, found no match for: \$this');
}
T matchAny<T>({
required T Function() any,
${values.map(optionalNamedFunctionArgument).join(',\n')}
}) {
final v = this;
${values.map((v) => optionalEnumValueMatch(c, v)).join('\n')}
return any();
}
}
''';
}