optima 0.4.0.4 → 0.4.0.5
raw patch · 4 files changed
+84/−42 lines, 4 files
Files
- demo/Main.hs +2/−2
- library/Optima.hs +4/−4
- library/Optima/Prelude.hs +2/−4
- optima.cabal +76/−32
demo/Main.hs view
@@ -5,7 +5,8 @@ import qualified Optima import Prelude -main = parseOpts >>= print+main :: IO ()+main = try @SomeException parseOpts >>= print where parseOpts = Optima.params@@ -57,4 +58,3 @@ where textParam = Optima.value "Text param" Optima.defaultless Optima.unformatted (Optima.explicitlyParsed Attoparsec.text) flag = Optima.flag "Flag type 1"- bytesParam = Optima.value "" Optima.defaultless Optima.unformatted (Optima.explicitlyParsed Attoparsec.utf8Bytes)
library/Optima.hs view
@@ -221,7 +221,7 @@ -- | -- Lift an implicit lenient Attoparsec parser into value parser.-implicitlyParsed :: Attoparsec.LenientParser a => Value a+implicitlyParsed :: (Attoparsec.LenientParser a) => Value a implicitlyParsed = Value Attoparsec.lenientParser -- ** Default@@ -233,7 +233,7 @@ -- | -- Provide a default value with textual representation formed using the implicit Show instance.-showable :: Show a => a -> Default a+showable :: (Show a) => a -> Default a showable a = SpecifiedDefault a (Text.pack (show a)) -- |@@ -302,11 +302,11 @@ paramHelp description format = foldMap (Optparse.help . Text.unpack) (renderIfNotEmpty (buildHelp description format)) -defaultValue :: Optparse.HasValue f => Default a -> Optparse.Mod f a+defaultValue :: (Optparse.HasValue f) => Default a -> Optparse.Mod f a defaultValue = \case SpecifiedDefault a text -> Optparse.value a <> Optparse.showDefaultWith (const (Text.unpack text)) UnspecifiedDefault -> mempty -longParamName :: Optparse.HasName f => Text -> Optparse.Mod f a+longParamName :: (Optparse.HasName f) => Text -> Optparse.Mod f a longParamName name = maybe mempty (Optparse.long . Text.unpack) (validate (not . Text.null) name)
library/Optima/Prelude.hs view
@@ -25,7 +25,7 @@ import Data.Fixed as Exports import Data.Foldable as Exports import Data.Function as Exports hiding (id, (.))-import Data.Functor as Exports+import Data.Functor as Exports hiding (unzip) import Data.Functor.Identity as Exports import Data.IORef as Exports import Data.Int as Exports@@ -60,14 +60,12 @@ import System.Mem as Exports import System.Mem.StableName as Exports import System.Timeout as Exports-import Text.ParserCombinators.ReadP as Exports (ReadP, ReadS, readP_to_S, readS_to_P)-import Text.ParserCombinators.ReadPrec as Exports (ReadPrec, readP_to_Prec, readPrec_to_P, readPrec_to_S, readS_to_Prec) import Text.Printf as Exports (hPrintf, printf) import Text.Read as Exports (Read (..), readEither, readMaybe) import Unsafe.Coerce as Exports import Prelude as Exports hiding (all, and, any, concat, concatMap, elem, fail, foldl, foldl1, foldr, foldr1, id, mapM, mapM_, maximum, minimum, notElem, or, product, sequence, sequence_, sum, (.)) -validate :: Alternative m => (a -> Bool) -> a -> m a+validate :: (Alternative m) => (a -> Bool) -> a -> m a validate predicate value = if predicate value then pure value
optima.cabal view
@@ -1,42 +1,86 @@ cabal-version: 3.0--name: optima-version: 0.4.0.4-category: CLI, Parsing, Options-synopsis: Simple command line interface arguments parser-homepage: https://github.com/metrix-ai/optima-bug-reports: https://github.com/metrix-ai/optima/issues-author: Nikita Volkov <nikita.y.volkov@mail.ru>-maintainer: Metrix.AI Tech Team <tech@metrix.ai>-copyright: (c) 2018, Metrix.AI-license: MIT-license-file: LICENSE+name: optima+version: 0.4.0.5+category: CLI, Parsing, Options+synopsis: Simple command line interface arguments parser+homepage: https://github.com/metrix-ai/optima+bug-reports: https://github.com/metrix-ai/optima/issues+author: Nikita Volkov <nikita.y.volkov@mail.ru>+maintainer: Metrix.AI Tech Team <tech@metrix.ai>+copyright: (c) 2018, Metrix.AI+license: MIT+license-file: LICENSE common language-settings- default-extensions: ApplicativeDo, BangPatterns, BinaryLiterals, BlockArguments, ConstraintKinds, DataKinds, DefaultSignatures, DeriveDataTypeable, DeriveFoldable, DeriveFunctor, DeriveGeneric, DeriveTraversable, DerivingVia, DuplicateRecordFields, EmptyDataDecls, FlexibleContexts, FlexibleInstances, FunctionalDependencies, GADTs, GeneralizedNewtypeDeriving, HexFloatLiterals, LambdaCase, LiberalTypeSynonyms, MultiParamTypeClasses, MultiWayIf, NoImplicitPrelude, NoMonomorphismRestriction, NumericUnderscores, OverloadedLabels, OverloadedStrings, PatternGuards, PatternSynonyms, ParallelListComp, QuasiQuotes, RankNTypes, RecordWildCards, ScopedTypeVariables, StandaloneDeriving, StrictData, TemplateHaskell, TupleSections, TypeApplications, TypeFamilies, TypeOperators, UndecidableInstances, ViewPatterns- default-language: Haskell2010+ default-extensions:+ NoImplicitPrelude+ NoMonomorphismRestriction+ ApplicativeDo+ BangPatterns+ BinaryLiterals+ BlockArguments+ ConstraintKinds+ DataKinds+ DefaultSignatures+ DeriveDataTypeable+ DeriveFoldable+ DeriveFunctor+ DeriveGeneric+ DeriveTraversable+ DerivingVia+ DuplicateRecordFields+ EmptyDataDecls+ FlexibleContexts+ FlexibleInstances+ FunctionalDependencies+ GADTs+ GeneralizedNewtypeDeriving+ HexFloatLiterals+ LambdaCase+ LiberalTypeSynonyms+ MultiParamTypeClasses+ MultiWayIf+ NumericUnderscores+ OverloadedLabels+ OverloadedStrings+ ParallelListComp+ PatternGuards+ PatternSynonyms+ QuasiQuotes+ RankNTypes+ RecordWildCards+ ScopedTypeVariables+ StandaloneDeriving+ StrictData+ TemplateHaskell+ TupleSections+ TypeApplications+ TypeFamilies+ TypeOperators+ UndecidableInstances+ ViewPatterns + default-language: Haskell2010+ library- import: language-settings- hs-source-dirs: library- exposed-modules:- Optima- other-modules:- Optima.Prelude+ import: language-settings+ hs-source-dirs: library+ exposed-modules: Optima+ other-modules: Optima.Prelude build-depends:- attoparsec >=0.13 && <0.15,- attoparsec-data >=1.0.5.2 && <1.1,- base >=4.9 && <5,- optparse-applicative >=0.15 && <0.19,- text >=1.2 && <3,- text-builder >=0.6 && <0.7+ , attoparsec >=0.13 && <0.15+ , attoparsec-data >=1.0.5.2 && <1.1+ , base >=4.9 && <5+ , optparse-applicative >=0.15 && <0.19+ , text >=1.2 && <3+ , text-builder >=0.6 && <0.7 test-suite demo- import: language-settings- type: exitcode-stdio-1.0+ import: language-settings+ type: exitcode-stdio-1.0 hs-source-dirs: demo- main-is: Main.hs+ main-is: Main.hs build-depends:- optima,- attoparsec-data ==1.*,- rerebase ==1.*+ , attoparsec-data >=1 && <2+ , optima+ , rerebase >=1 && <2