compareTo method

  1. @override
int compareTo(
  1. SemanticVersion other
)
override

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;
}