diff options
Diffstat (limited to 'lib/KeyRing')
-rw-r--r-- | lib/KeyRing/BuildKeyDB.hs | 1 | ||||
-rw-r--r-- | lib/KeyRing/Types.hs | 13 |
2 files changed, 11 insertions, 3 deletions
diff --git a/lib/KeyRing/BuildKeyDB.hs b/lib/KeyRing/BuildKeyDB.hs index 943578f..8af8198 100644 --- a/lib/KeyRing/BuildKeyDB.hs +++ b/lib/KeyRing/BuildKeyDB.hs | |||
@@ -72,6 +72,7 @@ import ScanningParser | |||
72 | import TimeUtil | 72 | import TimeUtil |
73 | 73 | ||
74 | import KeyRing.Types | 74 | import KeyRing.Types |
75 | import KeyDB | ||
75 | import Transforms | 76 | import Transforms |
76 | import PacketTranscoder | 77 | import PacketTranscoder |
77 | import GnuPGAgent | 78 | import GnuPGAgent |
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 #-} | ||
3 | module KeyRing.Types where | 4 | module KeyRing.Types where |
4 | 5 | ||
5 | import Data.Char (isLower,toLower) | 6 | import Data.Char (isLower,toLower) |
7 | import Data.Functor | ||
6 | import Data.List (groupBy,find) | 8 | import Data.List (groupBy,find) |
7 | import Data.Map as Map (Map) | 9 | import Data.Map as Map (Map) |
8 | import qualified Data.Map as Map | 10 | import 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 | ||
277 | instance FunctorToMaybe KikiCondition where | 279 | instance 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 | ||
292 | instance Monad KikiCondition where | ||
293 | return = pure | ||
294 | KikiSuccess a >>= f = f a | ||
295 | kikiCondition >>= f = kikiCondition <&> error (show (const () <$> kikiCondition) ++ " >>= f") | ||
296 | |||
290 | uncamel :: String -> String | 297 | uncamel :: String -> String |
291 | uncamel str = unwords $ firstWord ++ (toLower .: otherWords) ++ args | 298 | uncamel str = unwords $ firstWord ++ (toLower .: otherWords) ++ args |
292 | where | 299 | where |