{-# LANGUAGE GeneralizedNewtypeDeriving #-}
module Staversion.Internal.BuildPlan.BuildPlanMap
( BuildPlanMap,
fromMap,
fromList,
toList,
HasVersions(..)
) where
import Control.Applicative (empty, (<$>), (<*>))
import qualified Data.HashMap.Strict as HM
import Data.Monoid (Monoid, (<>), mconcat)
import Data.Semigroup (Semigroup)
import Staversion.Internal.Query
( PackageName
)
import Staversion.Internal.Version (Version)
newtype BuildPlanMap = BuildPlanMap (HM.HashMap PackageName Version) deriving (Semigroup,Monoid,Show,Eq)
fromMap :: HM.HashMap PackageName Version -> BuildPlanMap
fromMap = BuildPlanMap
fromList :: [(PackageName, Version)] -> BuildPlanMap
fromList = BuildPlanMap . HM.fromList
toList :: BuildPlanMap -> [(PackageName, Version)]
toList (BuildPlanMap m) = HM.toList m
class HasVersions t where
packageVersion :: t -> PackageName -> Maybe Version
instance HasVersions BuildPlanMap where
packageVersion (BuildPlanMap bp_map) name = HM.lookup name bp_map