| Safe Haskell | None | 
|---|---|
| Language | Haskell2010 | 
Distribution.Types.VersionRange
Synopsis
- data VersionRange
- = AnyVersion
 - | ThisVersion Version
 - | LaterVersion Version
 - | OrLaterVersion Version
 - | EarlierVersion Version
 - | OrEarlierVersion Version
 - | WildcardVersion Version
 - | MajorBoundVersion Version
 - | UnionVersionRanges VersionRange VersionRange
 - | IntersectVersionRanges VersionRange VersionRange
 - | VersionRangeParens VersionRange
 
 - anyVersion :: VersionRange
 - noVersion :: VersionRange
 - thisVersion :: Version -> VersionRange
 - notThisVersion :: Version -> VersionRange
 - laterVersion :: Version -> VersionRange
 - earlierVersion :: Version -> VersionRange
 - orLaterVersion :: Version -> VersionRange
 - orEarlierVersion :: Version -> VersionRange
 - unionVersionRanges :: VersionRange -> VersionRange -> VersionRange
 - intersectVersionRanges :: VersionRange -> VersionRange -> VersionRange
 - withinVersion :: Version -> VersionRange
 - majorBoundVersion :: Version -> VersionRange
 - withinRange :: Version -> VersionRange -> Bool
 - foldVersionRange :: a -> (Version -> a) -> (Version -> a) -> (Version -> a) -> (a -> a -> a) -> (a -> a -> a) -> VersionRange -> a
 - normaliseVersionRange :: VersionRange -> VersionRange
 - stripParensVersionRange :: VersionRange -> VersionRange
 - hasUpperBound :: VersionRange -> Bool
 - hasLowerBound :: VersionRange -> Bool
 - data VersionRangeF a
 - cataVersionRange :: (VersionRangeF a -> a) -> VersionRange -> a
 - anaVersionRange :: (a -> VersionRangeF a) -> a -> VersionRange
 - hyloVersionRange :: (VersionRangeF VersionRange -> VersionRange) -> (VersionRange -> VersionRangeF VersionRange) -> VersionRange -> VersionRange
 - projectVersionRange :: VersionRange -> VersionRangeF VersionRange
 - embedVersionRange :: VersionRangeF VersionRange -> VersionRange
 - wildcardUpperBound :: Version -> Version
 - majorUpperBound :: Version -> Version
 - isWildcardRange :: Version -> Version -> Bool
 
Version ranges
data VersionRange Source #
Constructors
| AnyVersion | Deprecated: Use   | 
| ThisVersion Version | Deprecated: Use   | 
| LaterVersion Version | Deprecated: Use   | 
| OrLaterVersion Version | |
| EarlierVersion Version | Deprecated: Use   | 
| OrEarlierVersion Version | |
| WildcardVersion Version | Deprecated: Use   | 
| MajorBoundVersion Version | |
| UnionVersionRanges VersionRange VersionRange | Deprecated: Use   | 
| IntersectVersionRanges VersionRange VersionRange | Deprecated: Use   | 
| VersionRangeParens VersionRange | 
Instances
Constructing
anyVersion :: VersionRange Source #
The version range -any. That is, a version range containing all
 versions.
withinRange v anyVersion = True
noVersion :: VersionRange Source #
The empty version range, that is a version range containing no versions.
This can be constructed using any unsatisfiable version range expression,
 for example > 1 && < 1.
withinRange v noVersion = False
thisVersion :: Version -> VersionRange Source #
The version range == v
withinRange v' (thisVersion v) = v' == v
notThisVersion :: Version -> VersionRange Source #
The version range || v
withinRange v' (notThisVersion v) = v' /= v
laterVersion :: Version -> VersionRange Source #
The version range > v
withinRange v' (laterVersion v) = v' > v
earlierVersion :: Version -> VersionRange Source #
The version range < v
withinRange v' (earlierVersion v) = v' < v
orLaterVersion :: Version -> VersionRange Source #
The version range >= v
withinRange v' (orLaterVersion v) = v' >= v
orEarlierVersion :: Version -> VersionRange Source #
The version range <= v
withinRange v' (orEarlierVersion v) = v' <= v
unionVersionRanges :: VersionRange -> VersionRange -> VersionRange Source #
The version range vr1 || vr2
withinRange v' (unionVersionRanges vr1 vr2) = withinRange v' vr1 || withinRange v' vr2
intersectVersionRanges :: VersionRange -> VersionRange -> VersionRange Source #
The version range vr1 && vr2
withinRange v' (intersectVersionRanges vr1 vr2) = withinRange v' vr1 && withinRange v' vr2
withinVersion :: Version -> VersionRange Source #
The version range == v.*.
For example, for version 1.2, the version range == 1.2.* is the same as
 >= 1.2 && < 1.3
withinRange v' (laterVersion v) = v' >= v && v' < upper v
  where
    upper (Version lower t) = Version (init lower ++ [last lower + 1]) tmajorBoundVersion :: Version -> VersionRange Source #
The version range ^>= v.
For example, for version 1.2.3.4, the version range ^>= 1.2.3.4 is the same as
 >= 1.2.3.4 && < 1.3.
Note that ^>= 1 is equivalent to >= 1 && < 1.1.
Since: Cabal-2.0.0.2
Inspection
withinRange :: Version -> VersionRange -> Bool Source #
Does this version fall within the given range?
This is the evaluation function for the VersionRange type.
Arguments
| :: a | 
  | 
| -> (Version -> a) | "== v"  | 
| -> (Version -> a) | "> v"  | 
| -> (Version -> a) | "< v"  | 
| -> (a -> a -> a) | 
  | 
| -> (a -> a -> a) | 
  | 
| -> VersionRange | |
| -> a | 
Fold over the basic syntactic structure of a VersionRange.
This provides a syntactic view of the expression defining the version range.
 The syntactic sugar ">= v", "<= v" and "== v.*" is presented
 in terms of the other basic syntax.
For a semantic view use asVersionIntervals.
normaliseVersionRange :: VersionRange -> VersionRange Source #
Normalise VersionRange.
In particular collapse (== v || > v) into >= v, and so on.
stripParensVersionRange :: VersionRange -> VersionRange Source #
Remove VersionRangeParens constructors.
Since: Cabal-2.2
hasUpperBound :: VersionRange -> Bool Source #
Does the version range have an upper bound?
Since: Cabal-1.24.0.0
hasLowerBound :: VersionRange -> Bool Source #
Does the version range have an explicit lower bound?
Note: this function only considers the user-specified lower bounds, but not the implicit >=0 lower bound.
Since: Cabal-1.24.0.0
Cata & ana
data VersionRangeF a Source #
F-Algebra of VersionRange. See cataVersionRange.
Since: Cabal-2.2
Constructors
Instances
cataVersionRange :: (VersionRangeF a -> a) -> VersionRange -> a Source #
Fold VersionRange.
Since: Cabal-2.2
anaVersionRange :: (a -> VersionRangeF a) -> a -> VersionRange Source #
Unfold VersionRange.
Since: Cabal-2.2
hyloVersionRange :: (VersionRangeF VersionRange -> VersionRange) -> (VersionRange -> VersionRangeF VersionRange) -> VersionRange -> VersionRange Source #
Refold VersionRange
Since: Cabal-2.2
projectVersionRange :: VersionRange -> VersionRangeF VersionRange Source #
Since: Cabal-2.2
embedVersionRange :: VersionRangeF VersionRange -> VersionRange Source #
Since: Cabal-2.2
Utilities
wildcardUpperBound :: Version -> Version Source #
Since: Cabal-2.2
majorUpperBound :: Version -> Version Source #
Compute next greater major version to be used as upper bound
Example: 0.4.1 produces the version 0.5 which then can be used
 to construct a range >= 0.4.1 && < 0.5
Since: Cabal-2.2