optima 0.4.0.5 → 0.4.0.6
raw patch · 2 files changed
+38/−39 lines, 2 filesdep ~text-builder
Dependency ranges changed: text-builder
Files
- library/Optima.hs +9/−9
- optima.cabal +29/−30
library/Optima.hs view
@@ -41,7 +41,7 @@ import qualified Data.Text as Text import Optima.Prelude hiding (group) import qualified Options.Applicative as Optparse-import qualified Text.Builder as TextBuilder+import qualified TextBuilder -- * Types @@ -73,7 +73,7 @@ -- | -- Parameter description.-data ValueFormat a = EnumValueFormat [TextBuilder.Builder] | UnspecifiedFormat+data ValueFormat a = EnumValueFormat [TextBuilder.TextBuilder] | UnspecifiedFormat -- * Instances @@ -257,7 +257,7 @@ -- | -- Derive value format specification from the Enum instance and -- explicit mapping of values to their representations.-formattedByEnumUsingBuilderMapping :: (Bounded a, Enum a) => (a -> TextBuilder.Builder) -> ValueFormat a+formattedByEnumUsingBuilderMapping :: (Bounded a, Enum a) => (a -> TextBuilder.TextBuilder) -> ValueFormat a formattedByEnumUsingBuilderMapping valueRepresentation = let values = enumFromTo minBound (asTypeOf maxBound (descriptionToA description)) descriptionToA = undefined :: ValueFormat a -> a@@ -271,24 +271,24 @@ -- ** Rendering building -buildValueFormat :: ValueFormat a -> TextBuilder.Builder+buildValueFormat :: ValueFormat a -> TextBuilder.TextBuilder buildValueFormat = \case EnumValueFormat values -> "(" <> TextBuilder.intercalate ", " values <> ")" UnspecifiedFormat -> mempty -buildHelp :: Text -> ValueFormat a -> TextBuilder.Builder+buildHelp :: Text -> ValueFormat a -> TextBuilder.TextBuilder buildHelp description valueFormat = TextBuilder.intercalate (TextBuilder.char ' ') (notNull (TextBuilder.text description) <> notNull (buildValueFormat valueFormat)) where- notNull :: TextBuilder.Builder -> [TextBuilder.Builder]- notNull = validate (not . TextBuilder.null)+ notNull :: TextBuilder.TextBuilder -> [TextBuilder.TextBuilder]+ notNull = validate (not . TextBuilder.isEmpty) -- ** Rendering -renderIfNotEmpty :: TextBuilder.Builder -> Maybe Text-renderIfNotEmpty = fmap TextBuilder.run . validate (not . TextBuilder.null)+renderIfNotEmpty :: TextBuilder.TextBuilder -> Maybe Text+renderIfNotEmpty = fmap TextBuilder.toText . validate (not . TextBuilder.isEmpty) prefixIfMakesSense :: Text -> Text -> Text prefixIfMakesSense prefix text =
optima.cabal view
@@ -1,20 +1,19 @@ cabal-version: 3.0-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+name: optima+version: 0.4.0.6+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-language: Haskell2010 default-extensions:- NoImplicitPrelude- NoMonomorphismRestriction ApplicativeDo BangPatterns BinaryLiterals@@ -40,6 +39,8 @@ LiberalTypeSynonyms MultiParamTypeClasses MultiWayIf+ NoImplicitPrelude+ NoMonomorphismRestriction NumericUnderscores OverloadedLabels OverloadedStrings@@ -60,27 +61,25 @@ UndecidableInstances ViewPatterns - default-language: Haskell2010- library- import: language-settings- hs-source-dirs: library+ import: language-settings+ hs-source-dirs: library exposed-modules: Optima- other-modules: Optima.Prelude+ 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 ^>=1, 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:- , attoparsec-data >=1 && <2- , optima- , rerebase >=1 && <2+ attoparsec-data >=1 && <2,+ optima,+ rerebase >=1 && <2,