SemanticVersion.parse constructor
SemanticVersion.parse(
- String version
Parse a version string (e.g., "1.2.3", "1.2.3-alpha", "1.2.3+build.1")
Implementation
factory SemanticVersion.parse(String version) {
// Remove leading 'v' if present
String v = version.startsWith('v') ? version.substring(1) : version;
// Split by + to separate build metadata
String? buildMetadata;
if (v.contains('+')) {
final parts = v.split('+');
v = parts[0];
buildMetadata = parts.length > 1 ? parts[1] : null;
}
// Split by - to separate pre-release
String? preRelease;
if (v.contains('-')) {
final parts = v.split('-');
v = parts[0];
preRelease = parts.length > 1 ? parts.sublist(1).join('-') : null;
}
// Parse major.minor.patch
final parts = v.split('.');
if (parts.isEmpty) {
throw FormatException('Invalid version format: $version');
}
int major = int.tryParse(parts[0]) ?? 0;
int minor = parts.length > 1 ? (int.tryParse(parts[1]) ?? 0) : 0;
int patch = parts.length > 2 ? (int.tryParse(parts[2]) ?? 0) : 0;
return SemanticVersion(
major: major,
minor: minor,
patch: patch,
preRelease: preRelease,
buildMetadata: buildMetadata,
);
}