createAdifContentFromString function

AdifGeneral createAdifContentFromString(
  1. String value,
  2. String type,
  3. List<String>? enumList,
  4. (double, double)? range,
)

Factory function to create AdifGeneral instances from string value and type. This function has covered all ADIF-defined types supported by this library.

Implementation

AdifGeneral createAdifContentFromString(
  String value,
  String type,
  List<String>? enumList,
  (double min, double max)? range,
) {
  switch (type.toLowerCase()) {
    case 'b':
    case 'boolean':
      return AdifBoolean.fromString(value);
    case 'character':
      return AdifCharacter.fromString(value);
    case 'intlcharacter':
      return AdifIntlCharacter.fromString(value);
    case 'integer':
      return AdifInteger.fromString(value);
    case 'positiveinteger':
      return AdifPositiveInteger.fromString(value);
    case 'n':
    case 'number':
      if (range != null) {
        return AdifRange(
          AdifNumber.fromString(value).value,
          range.$1,
          range.$2,
        );
      }
      return AdifNumber.fromString(value);
    case 'digit':
      return AdifDigit.fromString(value);
    case 'd':
    case 'date':
      return AdifDate.fromString(value);
    case 't':
    case 'time':
      return AdifTime.fromString(value);
    case 's':
    case 'string':
      return AdifString.fromString(value);
    case 'i':
    case 'intlstring':
      return AdifIntlString.fromString(value);
    case 'm':
    case 'multilinestring':
      return AdifMultilineString.fromString(value);
    case 'g':
    case 'intlmultilinestring':
      return AdifIntlMultilineString.fromString(value);
    case 'e':
    case 'enumeration':
      if (enumList == null) {
        throw ArgumentError('Enumeration list must be provided for type $type');
      }
      return AdifSelfEnum(value.toUpperCase(), enumList);
    case 'l':
    case 'location':
      return AdifLocation.fromString(value);
    case 'gridsquare':
      return AdifGridSquare.fromString(value);
    case 'gridsquareext':
      return AdifGridSquareExt.fromString(value);
    case 'gridsquarelist':
      return AdifGridSquareList.fromString(value);
    case 'potaref':
      return AdifPOTARef.fromString(value);
    case 'potareflist':
      return AdifPOTARefList.fromString(value);
    case 'sotaref':
      return AdifSOTARef.fromString(value);
    case 'wwffref':
      return AdifWWFFRef.fromString(value);
    default:
      throw ArgumentError('Unknown ADIF type: $type');
  }
}