CockpitEnumValue<T extends Enum>.parse constructor

CockpitEnumValue<T extends Enum>.parse(
  1. Object? value,
  2. List<T> values,
  3. String path, {
  4. required CockpitDecodePolicy policy,
  5. bool extensibleResponse = false,
})

Creates a CockpitEnumValue using the named constructor parse.

Implementation

factory CockpitEnumValue.parse(
  Object? value,
  List<T> values,
  String path, {
  required CockpitDecodePolicy policy,
  bool extensibleResponse = false,
}) {
  if (value is! String || value.isEmpty) {
    throw FormatException('Expected a non-empty enum value at $path.');
  }
  for (final candidate in values) {
    if (candidate.name == value) {
      return CockpitEnumValue<T>.known(candidate);
    }
  }
  if (!extensibleResponse || !policy.allowUnknownEnumValues) {
    throw FormatException('Unsupported enum value "$value" at $path.');
  }
  return CockpitEnumValue<T>._(wireValue: value);
}