packages feed

envy 2.0.0.0 → 2.1.0.0

raw patch · 3 files changed

+25/−3 lines, 3 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ System.Envy: ReadShowVar :: a -> ReadShowVar a
+ System.Envy: [unReadShowVar] :: ReadShowVar a -> a
+ System.Envy: instance (Data.Typeable.Internal.Typeable a, GHC.Show.Show a, GHC.Read.Read a) => System.Envy.Var (System.Envy.ReadShowVar a)
+ System.Envy: instance (System.Envy.Var a, Data.Typeable.Internal.Typeable a) => System.Envy.Var (Data.Functor.Identity.Identity a)
+ System.Envy: instance (System.Envy.Var a, Data.Typeable.Internal.Typeable a) => System.Envy.Var (Data.Monoid.First a)
+ System.Envy: instance (System.Envy.Var a, Data.Typeable.Internal.Typeable a) => System.Envy.Var (Data.Monoid.Last a)
+ System.Envy: instance Control.Monad.Fail.MonadFail System.Envy.Parser
+ System.Envy: newtype ReadShowVar a

Files

envy.cabal view
@@ -1,5 +1,5 @@ name:                envy-version:             2.0.0.0+version:             2.1.0.0 synopsis:            An environmentally friendly way to deal with environment variables license:             BSD3 license-file:        LICENSE
examples/Test.hs view
@@ -13,10 +13,10 @@   defConfig = PGConfig "localhost" 5432  instance FromEnv PGConfig where-  fromEnv = fromEnvCustom (Option 7 "PG")+  fromEnv = gFromEnvCustom (Option 7 "PG")   -- Generically creates instance for retrieving environment variables (PG_HOST, PG_PORT)  main :: IO () main =-  print =<< decodeEnv :: IO (Either String PGConfig)+  print =<< (decodeEnv :: IO (Either String PGConfig))  -- PGConfig { pgHost = "foobah", pgPort = 5432 }
src/System/Envy.hs view
@@ -1,5 +1,6 @@ {-# LANGUAGE DeriveGeneric              #-} {-# LANGUAGE RecordWildCards            #-}+{-# LANGUAGE StandaloneDeriving         #-} {-# LANGUAGE TypeOperators              #-} {-# LANGUAGE FlexibleContexts           #-} {-# LANGUAGE MultiParamTypeClasses      #-}@@ -67,6 +68,8 @@        , envMaybe        , (.=)        , (.!=)+         -- * Utility Types+       , ReadShowVar (..)          -- * Generics        , DefConfig (..)        , Option (..)@@ -77,8 +80,11 @@ ------------------------------------------------------------------------------ import           Control.Applicative import           Control.Monad.Except+import           Control.Monad.Fail import           Control.Exception+import           Data.Functor.Identity import           Data.Maybe+import           Data.Monoid import           Data.Char import           Data.Time import           GHC.Generics@@ -98,6 +104,9 @@   deriving ( Functor, Monad, Applicative, MonadError String            , MonadIO, Alternative, MonadPlus ) +instance MonadFail Parser where+  fail = Parser . throwError+ ------------------------------------------------------------------------------ -- | Variable type, smart constructor for handling environment variables. data EnvVar = EnvVar {@@ -310,6 +319,19 @@   fromVar "" = Nothing   fromVar  s = Just <$> fromVar s +------------------------------------------------------------------------------+deriving instance (Var a, Typeable a) => Var (Last a)+deriving instance (Var a, Typeable a) => Var (First a)+deriving instance (Var a, Typeable a) => Var (Identity a)++------------------------------------------------------------------------------+-- | A utility type to use any instance of 'Read' and 'Show' as an instance of+--   'Var'.+newtype ReadShowVar a = ReadShowVar { unReadShowVar :: a }++instance (Typeable a, Show a, Read a) => Var (ReadShowVar a) where+  toVar = show . unReadShowVar+  fromVar = fmap ReadShowVar . readMaybe ------------------------------------------------------------------------------ -- | Environment retrieval with failure info decodeEnv :: FromEnv a => IO (Either String a)