tryParse static method

DOI? tryParse(
  1. String value
)

Implementation

static DOI? tryParse(String value) {
  bool found;
  String prefix, suffix;

  (prefix, suffix, found) = value.cutFirst('/');
  if (!found) {
    return null;
  }

  if (prefix.isEmpty || suffix.isEmpty) {
    return null;
  }

  String directoryIndicatorStr, registrantCode;
  (directoryIndicatorStr, registrantCode, found) = prefix.cutFirst('.');

  if (!found) {
    return null;
  }

  if (directoryIndicatorStr.isEmpty || registrantCode.isEmpty) {
    return null;
  }

  final parseResult = DigitString.tryParse(directoryIndicatorStr);

  if (parseResult != null) {
    DigitString directoryIndicator = parseResult;

    final registrantCodes = _parseRegistrantCode(registrantCode);
    if (registrantCodes == null || registrantCodes.isEmpty) {
      return null;
    }
    final doi = DOI._(directoryIndicator, registrantCodes, suffix);
    return doi;
  }
  return null;
}