summaryrefslogtreecommitdiff
path: root/lib/KeyRing/Types.hs
diff options
context:
space:
mode:
Diffstat (limited to 'lib/KeyRing/Types.hs')
-rw-r--r--lib/KeyRing/Types.hs13
1 files changed, 10 insertions, 3 deletions
diff --git a/lib/KeyRing/Types.hs b/lib/KeyRing/Types.hs
index 0797dab..3c1f0a5 100644
--- a/lib/KeyRing/Types.hs
+++ b/lib/KeyRing/Types.hs
@@ -1,8 +1,10 @@
1{-# LANGUAGE DeriveFunctor #-} 1{-# LANGUAGE DeriveFunctor #-}
2{-# LANGUAGE PatternSynonyms #-} 2{-# LANGUAGE DeriveTraversable #-}
3{-# LANGUAGE PatternSynonyms #-}
3module KeyRing.Types where 4module KeyRing.Types where
4 5
5import Data.Char (isLower,toLower) 6import Data.Char (isLower,toLower)
7import Data.Functor
6import Data.List (groupBy,find) 8import Data.List (groupBy,find)
7import Data.Map as Map (Map) 9import Data.Map as Map (Map)
8import qualified Data.Map as Map 10import qualified Data.Map as Map
@@ -272,7 +274,7 @@ data KikiCondition a = KikiSuccess a
272 | NoWorkingKey 274 | NoWorkingKey
273 | AgentConnectionFailure 275 | AgentConnectionFailure
274 | OperationCanceled 276 | OperationCanceled
275 deriving ( Functor, Show ) 277 deriving ( Functor, Foldable, Traversable, Show )
276 278
277instance FunctorToMaybe KikiCondition where 279instance FunctorToMaybe KikiCondition where
278 functorToMaybe (KikiSuccess a) = Just a 280 functorToMaybe (KikiSuccess a) = Just a
@@ -287,6 +289,11 @@ instance Applicative KikiCondition where
287 Left err -> err 289 Left err -> err
288 Left err -> err 290 Left err -> err
289 291
292instance Monad KikiCondition where
293 return = pure
294 KikiSuccess a >>= f = f a
295 kikiCondition >>= f = kikiCondition <&> error (show (const () <$> kikiCondition) ++ " >>= f")
296
290uncamel :: String -> String 297uncamel :: String -> String
291uncamel str = unwords $ firstWord ++ (toLower .: otherWords) ++ args 298uncamel str = unwords $ firstWord ++ (toLower .: otherWords) ++ args
292 where 299 where