generateEnumHelpers function

String generateEnumHelpers(
  1. String enumName,
  2. List values
)

Implementation

String generateEnumHelpers(String enumName, List<dynamic> values) {
  // enum + fromJson / toJson switchers
  final b = StringBuffer();
  final tokens = <String>[];
  for (final v in values) {
    tokens.add(sanitizeEnumValue('$v'));
  }
  b.writeln('enum $enumName {');
  for (final t in tokens) {
    b.writeln('  $t,');
  }
  b.writeln('}');
  b.writeln();
  b.writeln('$enumName ${enumName}FromJson(dynamic value) {');
  b.writeln('  switch (value) {');
  for (int i = 0; i < values.length; i++) {
    b.writeln("    case '${values[i]}': return $enumName.${tokens[i]};");
  }
  b.writeln("    default: throw ArgumentError('Unknown $enumName: \$value');");
  b.writeln('  }');
  b.writeln('}');
  b.writeln();
  b.writeln("dynamic ${enumName}ToJson($enumName value) {");
  b.writeln('  switch (value) {');
  for (int i = 0; i < values.length; i++) {
    b.writeln(
        '    case $enumName.${tokens[i]}: return ${jsonEncode(values[i])};');
  }
  b.writeln('  }');
  b.writeln('}');
  b.writeln();
  return b.toString();
}