packages feed

optparse-generic 1.0.0 → 1.0.1

raw patch · 2 files changed

+44/−7 lines, 2 filesdep +timePVP ok

version bump matches the API change (PVP)

Dependencies added: time

API changes (from Hackage documentation)

+ Options.Generic: instance (Options.Generic.GenericParseRecord (f GHC.Generics.:+: g), Options.Generic.GenericParseRecord (h GHC.Generics.:+: i)) => Options.Generic.GenericParseRecord ((f GHC.Generics.:+: g) GHC.Generics.:+: (h GHC.Generics.:+: i))
+ Options.Generic: instance Options.Generic.ParseField Data.Time.Calendar.Days.Day
+ Options.Generic: instance Options.Generic.ParseFields Data.Time.Calendar.Days.Day
+ Options.Generic: instance Options.Generic.ParseRecord Data.Time.Calendar.Days.Day

Files

optparse-generic.cabal view
@@ -1,5 +1,5 @@ Name: optparse-generic-Version: 1.0.0+Version: 1.0.1 Cabal-Version: >=1.8.0.2 Build-Type: Simple License: BSD3@@ -27,6 +27,7 @@         text                               < 1.3 ,         transformers         >= 0.2.0.0 && < 0.6 ,         optparse-applicative >= 0.11.0  && < 0.13,+        time                 >= 1.5     && < 1.7,         void                               < 0.8     Exposed-Modules: Options.Generic     GHC-Options: -Wall
src/Options/Generic.hs view
@@ -196,6 +196,8 @@  import qualified Data.Text import qualified Data.Text.Lazy+import qualified Data.Time.Calendar+import qualified Data.Time.Format import qualified Data.Typeable import qualified Filesystem.Path.CurrentOS as Filesystem import qualified Options.Applicative       as Options@@ -300,6 +302,27 @@ instance ParseField FilePath where     parseField = fmap (fmap Filesystem.decodeString) (parseString "FILEPATH") +instance ParseField Data.Time.Calendar.Day where+    parseField m = do+        let metavar = "YYYY-MM-DD"+        case m of+            Nothing   -> do+                let fs =  Options.metavar metavar+                Options.argument iso8601Day fs+            Just name -> do+                let fs =  Options.metavar metavar+                       <> Options.long (Data.Text.unpack name)+                Options.option   iso8601Day fs+        where+        iso8601Day = Options.eitherReader+                   $ runReadS . Data.Time.Format.readSTime+                                  False+                                  Data.Time.Format.defaultTimeLocale+                                  "%F"++        runReadS [(day, "")] = Right day+        runReadS _           = Left "expected YYYY-MM-DD"+ {-| A class for all types that can be parsed from zero or more arguments/options     on the command line @@ -324,6 +347,7 @@ instance ParseFields Data.Text.Text instance ParseFields Data.Text.Lazy.Text instance ParseFields FilePath+instance ParseFields Data.Time.Calendar.Day  instance ParseFields Bool where     parseFields m =@@ -395,10 +419,14 @@  instance ParseFields a => ParseRecord (Only a) -instance ParseRecord Char-instance ParseRecord Double-instance ParseRecord Float-instance ParseRecord Int+instance ParseRecord Char where+    parseRecord = fmap getOnly parseRecord+instance ParseRecord Double where+    parseRecord = fmap getOnly parseRecord+instance ParseRecord Float where+    parseRecord = fmap getOnly parseRecord+instance ParseRecord Int where+    parseRecord = fmap getOnly parseRecord instance ParseRecord Ordering instance ParseRecord Void instance ParseRecord ()@@ -424,6 +452,9 @@ instance ParseRecord FilePath where     parseRecord = fmap getOnly parseRecord +instance ParseRecord Data.Time.Calendar.Day where+    parseRecord = fmap getOnly parseRecord+ instance ParseField a => ParseRecord (Maybe a) where     parseRecord = fmap getOnly parseRecord @@ -462,6 +493,11 @@     genericParseRecord = fmap M1 genericParseRecord  -- See: [NOTE - Sums]+instance (GenericParseRecord (f :+: g), GenericParseRecord (h :+: i)) => GenericParseRecord ((f :+: g) :+: (h :+: i)) where+    genericParseRecord = do+        fmap L1 genericParseRecord <|> fmap R1 genericParseRecord++-- See: [NOTE - Sums] instance (Constructor c, GenericParseRecord f, GenericParseRecord (g :+: h)) => GenericParseRecord (M1 C c f :+: (g :+: h)) where     genericParseRecord = do         let m :: M1 i c f a@@ -477,7 +513,7 @@          let parser = Options.subparser subparserFields -        fmap (L1 . M1) parser <|> genericParseRecord+        fmap (L1 . M1) parser <|> fmap R1 genericParseRecord  -- See: [NOTE - Sums] instance (Constructor c, GenericParseRecord (f :+: g), GenericParseRecord h) => GenericParseRecord ((f :+: g) :+: M1 C c h) where@@ -495,7 +531,7 @@          let parser = Options.subparser subparserFields -        genericParseRecord <|> fmap (R1 . M1) parser+        fmap L1 genericParseRecord <|> fmap (R1 . M1) parser  -- See: [NOTE - Sums] instance (Constructor c1, Constructor c2, GenericParseRecord f1, GenericParseRecord f2) => GenericParseRecord (M1 C c1 f1 :+: M1 C c2 f2) where