parse static method

VersionParser parse(
  1. String versionString
)

Implementation

static VersionParser parse(String versionString) {
  if (versionString.trim().isEmpty) {
    throw const FormatException('Cannot parse empty string into version');
  }
  if (!_versionRegex.hasMatch(versionString)) {
    throw const FormatException('Not a properly formatted version string');
  }
  final Match m = _versionRegex.firstMatch(versionString)!;
  final version = m.group(1)!;

  int? major, minor, patch;
  final parts = version.split('.');
  major = int.parse(parts[0]);
  if (parts.length > 1) {
    minor = int.parse(parts[1]);
    if (parts.length > 2) {
      patch = int.parse(parts[2]);
    }
  }

  final preReleaseString = m.group(3) ?? '';
  var preReleaseList = <String>[];
  if (preReleaseString.trim().isNotEmpty) {
    preReleaseList = preReleaseString.split('.');
  }
  final build = m.group(5) ?? '';

  return VersionParser(major, minor ?? 0, patch ?? 0,
      build: build, preRelease: preReleaseList);
}