compareTo method
Compares this object to another object.
Returns a value like a Comparator when comparing this
to other
.
That is, it returns a negative integer if this
is ordered before other
,
a positive integer if this
is ordered after other
,
and zero if this
and other
are ordered together.
The other
argument must be a value that is comparable to this object.
Implementation
@override
int compareTo(SemanticVersion other) {
if (major == other.major &&
minor == other.minor &&
patch == other.patch &&
(preReleaseMajor ?? 0) == (other.preReleaseMajor ?? 0) &&
(preReleaseMinor ?? 0) == (other.preReleaseMinor ?? 0)) {
return 0;
}
if (major > other.major ||
(major == other.major && minor > other.minor) ||
(major == other.major && minor == other.minor && patch > other.patch)) {
return 1;
}
if (major == other.major && minor == other.minor && patch == other.patch) {
if (isPreRelease != other.isPreRelease) {
return isPreRelease ? -1 : 1;
}
if (preReleaseMajor! > other.preReleaseMajor! ||
(preReleaseMajor == other.preReleaseMajor &&
(preReleaseMinor ?? 0) > (other.preReleaseMinor ?? 0))) {
return 1;
}
}
return -1;
}