content: module Distribution.Solver.Modular.Version
      ( Ver
      , VR
      , anyVR
      , checkVR
      , eqVR
      , showVer
      , showVR
      , simplifyVR
      , (.&&.)
      , (.||.)
      ) where
  
  import qualified Distribution.Version as CV -- from Cabal
  import Distribution.Text -- from Cabal
  
  -- | Preliminary type for versions.
  type Ver = CV.Version
  
  -- | String representation of a version.
  showVer :: Ver -> String
  showVer = display
  
  -- | Version range. Consists of a lower and upper bound.
  type VR = CV.VersionRange
  
  -- | String representation of a version range.
  showVR :: VR -> String
  showVR = display
  
  -- | Unconstrained version range.
  anyVR :: VR
  anyVR = CV.anyVersion
  
  -- | Version range fixing a single version.
  eqVR :: Ver -> VR
  eqVR = CV.thisVersion
  
  -- | Intersect two version ranges.
  (.&&.) :: VR -> VR -> VR
  (.&&.) = CV.intersectVersionRanges
  
  -- | Union of two version ranges.
  (.||.) :: VR -> VR -> VR
  (.||.) = CV.unionVersionRanges
  
  -- | Simplify a version range.
  simplifyVR :: VR -> VR
  simplifyVR = CV.simplifyVersionRange
  
  -- | Checking a version against a version range.
  checkVR :: VR -> Ver -> Bool
  checkVR = flip CV.withinRange
  