private static int CompareBuildVersions(Maybe <string> leftVersion, Maybe <string> rightVersion) { if (leftVersion.None && rightVersion.None) { return(0); // equal if both absent } if (leftVersion.Any() && rightVersion.None) { return(1); } if (leftVersion.None && rightVersion.Any()) { return(-1); } int result = CompareSegmentBySegment(leftVersion.Single(), rightVersion.Single()); return(result); }
private static int ComparePrereleaseVersions(Maybe <string> leftVersion, Maybe <string> rightVersion) { // If the prerelease segment is absent in both instances, then they are considered equal. if (leftVersion.None && rightVersion.None) { return(0); } // By definition, a prerelease version is less than the absence of a prerelease version - this is a bit counterintuitive. if (leftVersion.Any() && rightVersion.None) { return(-1); } if (leftVersion.None && rightVersion.Any()) { return(1); } int result = CompareSegmentBySegment(leftVersion.Single(), rightVersion.Single()); return(result); }
private int MaybeHashCode(Maybe <string> item) { return(item.Any() ? item.Single().GetHashCode() : string.Empty.GetHashCode()); }
/// <summary>Returns <c>true</c> if the <see cref="Maybe{T}" /> has no value.</summary> public static bool None <T>(this Maybe <T> maybe) => !maybe.Any();