salak-0.1.6: src/Data/Salak/Operation.hs
module Data.Salak.Operation where
import Data.Salak.Types
import Data.Text (Text, unpack)
infixl 5 .?>
(.?>) :: FromProperties a => Properties -> Text -> Return a
(.?>) = flip lookup'
infixl 5 .|=
(.|=) :: Return a -> a -> a
(.|=) (OK a) _ = a
(.|=) (Fail e) _ = error e
(.|=) _ d = d
infixl 5 .?=
(.?=) :: Return a -> a -> Return a
(.?=) a b = OK (a .|= b)
infixl 5 .>>
(.>>) :: FromProperties a => Properties -> Text -> a
(.>>) p k = case p .?> k of
OK v -> v
Empty -> case fromProperties empty of
(OK a) -> a
(Fail e) -> error e
_ -> error $ "Config " <> unpack k <> " not found"
Fail e -> error e