packages feed

optparse-generic 1.4.4 → 1.4.5

raw patch · 3 files changed

+38/−5 lines, 3 files

Files

CHANGELOG.md view
@@ -1,3 +1,8 @@+1.4.5++* [Add ability to set the short name in the type](https://github.com/Gabriel439/Haskell-Optparse-Generic-Library/pull/84)+* [Display default values in `--help` output](https://github.com/Gabriel439/Haskell-Optparse-Generic-Library/pull/83)+ 1.4.4  * `readIntegralBounded`: use `metavar` in error message
optparse-generic.cabal view
@@ -1,5 +1,5 @@ Name: optparse-generic-Version: 1.4.4+Version: 1.4.5 Cabal-Version: >=1.10 Build-Type: Simple License: BSD3@@ -27,12 +27,12 @@         base                 >= 4.6      && < 5   ,         system-filepath      >= 0.3.1    && < 0.5 ,         text                                < 1.3 ,-        transformers         >= 0.2.0.0  && < 0.6 ,+        transformers         >= 0.2.0.0  && < 0.7 ,         Only                                < 0.2 ,         optparse-applicative >= 0.16.0.0 && < 0.17,-        time                 >= 1.5      && < 1.10,+        time                 >= 1.5      && < 1.13,         void                                < 0.8 ,-        bytestring                          < 0.11+        bytestring                          < 0.12          if impl(ghc < 8.0)         Build-Depends:
src/Options/Generic.hs view
@@ -310,6 +310,7 @@     -- * Help     , type (<?>)(..)     , type (<!>)(..)+    , type (<#>)(..)     , type (:::)     , Wrapped     , Unwrapped@@ -330,6 +331,7 @@ import Control.Monad.IO.Class (MonadIO(..)) import Data.Char (isUpper, toLower, toUpper) import Data.Int (Int8, Int16, Int32, Int64)+import Data.Maybe (listToMaybe) import Data.Monoid import Data.List.NonEmpty (NonEmpty((:|))) import Data.Proxy@@ -418,6 +420,7 @@                        <> foldMap (Options.help . Data.Text.unpack) h                        <> foldMap Options.short c                        <> foldMap Options.value (d >>= Text.Read.readMaybe)+                       <> foldMap (Options.showDefaultWith . const) d                 Options.option   readField fs      {-| The only reason for this method is to provide a special case for@@ -518,7 +521,7 @@                    <> Options.long (Data.Text.unpack name)                    <> foldMap (Options.help . Data.Text.unpack) h                    <> foldMap Options.short c-                   <> foldMap Options.value d+                   <> foldMap ((Options.showDefault <>) . Options.value) d             Options.option Options.str fs  instance ParseField Data.Text.Text where@@ -683,6 +686,26 @@     parseFields h m c _ = DefValue <$> parseFields h m c (Just (symbolVal (Proxy :: Proxy d))) instance (ParseFields a, KnownSymbol h) => ParseRecord (a <!> h) +{-| Use this to annotate a field with a type-level char (i.e. a `Symbol`)+    representing the short name of the field (only the first character of the+    symbol is used):++> data Example = Example+>     { foo :: Int    <#> "f"+>     , bar :: Double <#> "b"+>     } deriving (Generic, Show)+-}+newtype (<#>) (field :: *) (value :: Symbol) = ShortName { unShortName :: field } deriving (Generic, Show)++instance (ParseField a, KnownSymbol c) => ParseField (a <#> c) where+    parseField h m _ d = ShortName <$> parseField h m (listToMaybe (symbolVal (Proxy :: Proxy c))) d+    readField = ShortName <$> readField+    metavar _ = metavar (Proxy :: Proxy a)++instance (ParseFields a, KnownSymbol c) => ParseFields (a <#> c) where+    parseFields h m _ d = ShortName <$> parseFields h m (listToMaybe (symbolVal (Proxy :: Proxy c))) d+instance (ParseFields a, KnownSymbol h) => ParseRecord (a <#> h)+ {-| A 1-tuple, used solely to translate `ParseFields` instances into     `ParseRecord` instances -}@@ -1172,6 +1195,7 @@ type family Unwrap ty where   Unwrap (ty <?> helper) = Unwrap ty   Unwrap (ty <!> defVal) = Unwrap ty+  Unwrap (ty <#> shrtNm) = Unwrap ty   Unwrap ty = ty  infixr 0 :::@@ -1211,6 +1235,10 @@ instance GenericUnwrappable (K1 i field) (K1 i c)   => GenericUnwrappable (K1 i (field <!> defVal)) (K1 i c) where     genericUnwrap (K1 c) = (genericUnwrap :: K1 i field p -> K1 i c p) (K1 (unDefValue c))++instance GenericUnwrappable (K1 i field) (K1 i c)+  => GenericUnwrappable (K1 i (field <#> defVal)) (K1 i c) where+    genericUnwrap (K1 c) = (genericUnwrap :: K1 i field p -> K1 i c p) (K1 (unShortName c))  -- | Unwrap the fields of a constructor unwrap :: forall f . Unwrappable f => f Wrapped -> f Unwrapped