{-# LANGUAGE DeriveGeneric #-}
module OptEnvConf.EnvMap
( EnvMap (..),
empty,
parse,
lookup,
insert,
)
where
import Data.Map (Map)
import qualified Data.Map as M
import Data.Validity
import Data.Validity.Containers ()
import GHC.Generics (Generic)
import Prelude hiding (lookup)
newtype EnvMap = EnvMap {EnvMap -> Map String String
unEnvMap :: Map String String}
deriving (Int -> EnvMap -> ShowS
[EnvMap] -> ShowS
EnvMap -> String
(Int -> EnvMap -> ShowS)
-> (EnvMap -> String) -> ([EnvMap] -> ShowS) -> Show EnvMap
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> EnvMap -> ShowS
showsPrec :: Int -> EnvMap -> ShowS
$cshow :: EnvMap -> String
show :: EnvMap -> String
$cshowList :: [EnvMap] -> ShowS
showList :: [EnvMap] -> ShowS
Show, (forall x. EnvMap -> Rep EnvMap x)
-> (forall x. Rep EnvMap x -> EnvMap) -> Generic EnvMap
forall x. Rep EnvMap x -> EnvMap
forall x. EnvMap -> Rep EnvMap x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. EnvMap -> Rep EnvMap x
from :: forall x. EnvMap -> Rep EnvMap x
$cto :: forall x. Rep EnvMap x -> EnvMap
to :: forall x. Rep EnvMap x -> EnvMap
Generic)
instance Validity EnvMap
empty :: EnvMap
empty :: EnvMap
empty = EnvMap {unEnvMap :: Map String String
unEnvMap = Map String String
forall k a. Map k a
M.empty}
parse :: [(String, String)] -> EnvMap
parse :: [(String, String)] -> EnvMap
parse = Map String String -> EnvMap
EnvMap (Map String String -> EnvMap)
-> ([(String, String)] -> Map String String)
-> [(String, String)]
-> EnvMap
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [(String, String)] -> Map String String
forall k a. Ord k => [(k, a)] -> Map k a
M.fromList
lookup :: String -> EnvMap -> Maybe String
lookup :: String -> EnvMap -> Maybe String
lookup String
v (EnvMap Map String String
m) = String -> Map String String -> Maybe String
forall k a. Ord k => k -> Map k a -> Maybe a
M.lookup String
v Map String String
m
insert :: String -> String -> EnvMap -> EnvMap
insert :: String -> String -> EnvMap -> EnvMap
insert String
k String
v (EnvMap Map String String
m) = Map String String -> EnvMap
EnvMap (String -> String -> Map String String -> Map String String
forall k a. Ord k => k -> a -> Map k a -> Map k a
M.insert String
k String
v Map String String
m)