module CabalBounds.Types where

import qualified Data.HashMap.Strict as HM
import qualified Distribution.Version as V
import Control.Lens
import qualified CabalLenses as CL

type LibName    = String
type LibVersion = [Int]
type Library    = (LibName, LibVersion)
type Libraries  = [Library]
type LibraryMap = HM.HashMap LibName V.Version

toList :: LibraryMap -> Libraries
toList :: LibraryMap -> Libraries
toList LibraryMap
libs =
   ((LibName, Version) -> Library)
-> [(LibName, Version)] -> Libraries
forall a b. (a -> b) -> [a] -> [b]
map (\(LibName
name, Version
version) -> (LibName
name, Version
version Version -> Getting LibVersion Version LibVersion -> LibVersion
forall s a. s -> Getting a s a -> a
^. Getting LibVersion Version LibVersion
Iso' Version LibVersion
CL.versionBranchL)) ([(LibName, Version)] -> Libraries)
-> [(LibName, Version)] -> Libraries
forall a b. (a -> b) -> a -> b
$ LibraryMap -> [(LibName, Version)]
forall k v. HashMap k v -> [(k, v)]
HM.toList LibraryMap
libs