VersionRange constructor
Creates a new version range from min to max, either inclusive or
exclusive.
If it is an error if min is greater than max.
Either max or min may be omitted to not clamp the range at that end.
If both are omitted, the range allows all versions.
If includeMin is true, then the minimum end of the range is inclusive.
Likewise, passing includeMax as true makes the upper end inclusive.
If alwaysIncludeMaxPreRelease is true, this will always include
pre-release versions of an exclusive max. Otherwise, it will use the
default behavior for pre-release versions of max.
Implementation
factory VersionRange(
{Version min,
Version max,
bool includeMin: false,
bool includeMax: false,
bool alwaysIncludeMaxPreRelease: false}) {
if (min != null && max != null && min > max) {
throw new ArgumentError(
'Minimum version ("$min") must be less than maximum ("$max").');
}
if (!alwaysIncludeMaxPreRelease &&
!includeMax &&
max != null &&
!max.isPreRelease &&
max.build.isEmpty &&
(min == null ||
!min.isPreRelease ||
!equalsWithoutPreRelease(min, max))) {
max = max.firstPreRelease;
}
return new VersionRange._(min, max, includeMin, includeMax);
}