createAdifContentFromString function
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');
}
}