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