| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 import 'utils.dart'; |
| 5 import 'version.dart'; | 6 import 'version.dart'; |
| 6 import 'version_constraint.dart'; | 7 import 'version_constraint.dart'; |
| 7 import 'version_union.dart'; | 8 import 'version_union.dart'; |
| 8 | 9 |
| 9 /// Constrains versions to a fall within a given range. | 10 /// Constrains versions to a fall within a given range. |
| 10 /// | 11 /// |
| 11 /// If there is a minimum, then this only allows versions that are at that | 12 /// If there is a minimum, then this only allows versions that are at that |
| 12 /// minimum or greater. If there is a maximum, then only versions less than | 13 /// minimum or greater. If there is a maximum, then only versions less than |
| 13 /// that are allowed. In other words, this allows `>= min, < max`. | 14 /// that are allowed. In other words, this allows `>= min, < max`. |
| 14 class VersionRange implements VersionConstraint { | 15 /// |
| 16 /// Version ranges are ordered first by their lower bounds, then by their upper |
| 17 /// bounds. For example, `>=1.0.0 <2.0.0` is before `>=1.5.0 <2.0.0` is before |
| 18 /// `>=1.5.0 <3.0.0`. |
| 19 class VersionRange implements Comparable<VersionRange>, VersionConstraint { |
| 15 /// The minimum end of the range. | 20 /// The minimum end of the range. |
| 16 /// | 21 /// |
| 17 /// If [includeMin] is `true`, this will be the minimum allowed version. | 22 /// If [includeMin] is `true`, this will be the minimum allowed version. |
| 18 /// Otherwise, it will be the highest version below the range that is not | 23 /// Otherwise, it will be the highest version below the range that is not |
| 19 /// allowed. | 24 /// allowed. |
| 20 /// | 25 /// |
| 21 /// This may be `null` in which case the range has no minimum end and allows | 26 /// This may be `null` in which case the range has no minimum end and allows |
| 22 /// any version less than the maximum. | 27 /// any version less than the maximum. |
| 23 final Version min; | 28 final Version min; |
| 24 | 29 |
| (...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 308 unionIncludeMax = true; | 313 unionIncludeMax = true; |
| 309 } | 314 } |
| 310 | 315 |
| 311 return new VersionRange(min: unionMin, max: unionMax, | 316 return new VersionRange(min: unionMin, max: unionMax, |
| 312 includeMin: unionIncludeMin, includeMax: unionIncludeMax); | 317 includeMin: unionIncludeMin, includeMax: unionIncludeMax); |
| 313 } | 318 } |
| 314 | 319 |
| 315 return new VersionConstraint.unionOf([this, other]); | 320 return new VersionConstraint.unionOf([this, other]); |
| 316 } | 321 } |
| 317 | 322 |
| 323 int compareTo(VersionRange other) { |
| 324 if (min == null) { |
| 325 if (other.min == null) return compareMax(this, other); |
| 326 return -1; |
| 327 } else if (other.min == null) { |
| 328 return 1; |
| 329 } |
| 330 |
| 331 var result = min.compareTo(other.min); |
| 332 if (result != 0) return result; |
| 333 if (includeMin != other.includeMin) return includeMin ? -1 : 1; |
| 334 |
| 335 return compareMax(this, other); |
| 336 } |
| 337 |
| 318 String toString() { | 338 String toString() { |
| 319 var buffer = new StringBuffer(); | 339 var buffer = new StringBuffer(); |
| 320 | 340 |
| 321 if (min != null) { | 341 if (min != null) { |
| 322 buffer.write(includeMin ? '>=' : '>'); | 342 buffer.write(includeMin ? '>=' : '>'); |
| 323 buffer.write(min); | 343 buffer.write(min); |
| 324 } | 344 } |
| 325 | 345 |
| 326 if (max != null) { | 346 if (max != null) { |
| 327 if (min != null) buffer.write(' '); | 347 if (min != null) buffer.write(' '); |
| 328 buffer.write(includeMax ? '<=' : '<'); | 348 buffer.write(includeMax ? '<=' : '<'); |
| 329 buffer.write(max); | 349 buffer.write(max); |
| 330 } | 350 } |
| 331 | 351 |
| 332 if (min == null && max == null) buffer.write('any'); | 352 if (min == null && max == null) buffer.write('any'); |
| 333 return buffer.toString(); | 353 return buffer.toString(); |
| 334 } | 354 } |
| 335 } | 355 } |
| OLD | NEW |