Chromium Code Reviews| Index: lib/src/utils.dart |
| diff --git a/lib/src/utils.dart b/lib/src/utils.dart |
| index 6493ddac51caa46fcb96e1aa45cc88dfe29810ad..efe105abed966f9f65f77fdc2d1bd876a092d512 100644 |
| --- a/lib/src/utils.dart |
| +++ b/lib/src/utils.dart |
| @@ -13,17 +13,46 @@ bool areAdjacent(VersionRange range1, VersionRange range2) { |
| (!range1.includeMax && range2.includeMin); |
| } |
| -/// A [Comparator] that compares the maximum versions of [range1] and [range2]. |
| -int compareMax(VersionRange range1, VersionRange range2) { |
| - if (range1.max == null) { |
| - if (range2.max == null) return 0; |
| - return 1; |
| - } else if (range2.max == null) { |
| - return -1; |
| - } |
| - |
| - var result = range1.max.compareTo(range2.max); |
| - if (result != 0) return result; |
| - if (range1.includeMax != range2.includeMax) return range1.includeMax ? 1 : -1; |
| - return 0; |
| +/// Returns whether [range1] allows lower versions than [range2]. |
|
Bob Nystrom
2016/06/08 22:51:06
Do you think it's worth hanging these methods off
nweiz
2016/06/08 23:39:02
I don't think they're general-purpose enough to pu
|
| +bool allowsLower(VersionRange range1, VersionRange range2) { |
| + if (range1.min == null) return range2.min != null; |
| + if (range2.min == null) return false; |
| + |
| + var comparison = range1.min.compareTo(range2.min); |
| + if (comparison == -1) return true; |
| + if (comparison == 1) return false; |
| + return range1.includeMin && !range2.includeMin; |
| +} |
| + |
| +/// Returns whether [range1] allows higher versions than [range2]. |
| +bool allowsHigher(VersionRange range1, VersionRange range2) { |
| + if (range1.max == null) return range2.max != null; |
| + if (range2.max == null) return false; |
| + |
| + var comparison = range1.max.compareTo(range2.max); |
| + if (comparison == 1) return true; |
| + if (comparison == -1) return false; |
| + return range1.includeMax && !range2.includeMax; |
| +} |
| + |
| +/// Returns whether [range1] allows only versions lower than those allowed by |
| +/// [range2]. |
| +bool strictlyLower(VersionRange range1, VersionRange range2) { |
| + if (range1.max == null || range2.min == null) return false; |
|
Bob Nystrom
2016/06/08 22:51:06
Is it possible for range1 to be empty? If so, is i
nweiz
2016/06/08 23:39:02
We generally assume that empty constraints are onl
|
| + |
| + var comparison = range1.max.compareTo(range2.min); |
| + if (comparison == -1) return true; |
| + if (comparison == 1) return false; |
| + return !range1.includeMax || !range2.includeMin; |
| +} |
| + |
| +/// Returns whether [range1] allows only versions higher than those allowed by |
| +/// [range2]. |
| +bool strictlyHigher(VersionRange range1, VersionRange range2) { |
| + if (range1.min == null || range2.max == null) return false; |
| + |
| + var comparison = range1.min.compareTo(range2.max); |
| + if (comparison == 1) return true; |
| + if (comparison == -1) return false; |
| + return !range1.includeMin || !range2.includeMax; |
| } |