docopt 0.7.0.6 → 0.7.0.7
raw patch · 6 files changed
+38/−36 lines, 6 filesdep −th-liftdep ~containersdep ~template-haskell
Dependencies removed: th-lift
Dependency ranges changed: containers, template-haskell
Files
- CHANGELOG.md +4/−0
- System/Console/Docopt/OptParse.hs +11/−11
- System/Console/Docopt/QQ/Instances.hs +9/−13
- System/Console/Docopt/Types.hs +5/−4
- System/Console/Docopt/UsageParse.hs +1/−1
- docopt.cabal +8/−7
CHANGELOG.md view
@@ -1,3 +1,7 @@+### 0.7.0.7 (unreleased)++- update bounds, fix warnings, require ghc 8.0++ ### 0.7.0.6 - Fixes issue causing compilation error to happen with ghc-8.8.2 [#33][#34]
System/Console/Docopt/OptParse.hs view
@@ -68,17 +68,17 @@ let rest = list \\ [pat] argDelimIfNotInShortOptStack makeParser $ Unordered rest- -- (Optional pat) ->- -- case pat of- -- Unordered ps -> case ps of- -- p:[] -> makeParser $ Optional p- -- _ -> optional $ choice $ (parseThisThenRest ps) `map` ps- -- where parseThisThenRest list pat = try $ do- -- makeParser pat- -- let rest = list \\ [pat]- -- argDelimIfNotInShortOptStack- -- makeParser $ Optional $ Unordered rest- -- _ -> optional $ try $ makeParser pat+ (Optional pat) ->+ case pat of+ Unordered ps -> case ps of+ p:[] -> makeParser $ Optional p+ _ -> optional $ choice $ (parseThisThenRest ps) `map` ps+ where parseThisThenRest list pat = try $ do+ makeParser pat+ let rest = list \\ [pat]+ argDelimIfNotInShortOptStack+ makeParser $ Optional $ Unordered rest+ _ -> optional $ try $ makeParser pat (Repeated pat) -> do case pat of (Optional p) -> (try $ makeParser p) `sepBy` argDelimIfNotInShortOptStack
System/Console/Docopt/QQ/Instances.hs view
@@ -1,19 +1,15 @@-{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE DeriveLift#-}+{-# LANGUAGE StandaloneDeriving #-}+{-# LANGUAGE FlexibleInstances #-}+ {-# OPTIONS_GHC -fno-warn-orphans #-} {-# OPTIONS_HADDOCK hide, prune #-}+ module System.Console.Docopt.QQ.Instances where import System.Console.Docopt.Types-import Language.Haskell.TH.Lift--import qualified Data.Map as M--instance (Lift k, Lift v) => Lift (M.Map k v) where- lift m = [| M.fromList assoc |]- where assoc = M.toList m+import Language.Haskell.TH.Syntax (Lift)+import Data.Map.Internal (Map(..)) -$(deriveLiftMany [ ''Option- , ''Pattern- , ''OptionInfo- , ''Docopt- ])+deriving instance Lift (Map Option OptionInfo)+deriving instance Lift (Docopt)
System/Console/Docopt/Types.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE DeriveLift#-} module System.Console.Docopt.Types where @@ -5,7 +6,7 @@ import Data.List (nub) import Data.Map (Map) import qualified Data.Map as M-+import Language.Haskell.TH.Syntax (Lift) -- * Usage expression Types @@ -17,7 +18,7 @@ | Optional (Pattern a) | Repeated (Pattern a) | Atom a- deriving (Show, Eq)+ deriving (Show, Eq, Lift) atoms :: Eq a => Pattern a -> [a] atoms (Sequence ps) = concatMap atoms ps@@ -33,7 +34,7 @@ | Command Name | Argument Name | AnyOption- deriving (Show, Eq, Ord)+ deriving (Show, Eq, Ord, Lift) type OptPattern = Pattern Option @@ -57,7 +58,7 @@ , defaultVal :: Maybe String , expectsVal :: Bool , isRepeated :: Bool- } deriving (Show, Eq)+ } deriving (Show, Eq, Lift) fromSynList :: [Option] -> OptionInfo fromSynList opts = OptionInfo { synonyms = opts
System/Console/Docopt/UsageParse.hs view
@@ -4,7 +4,7 @@ import qualified Data.Map as M import Data.Ord (comparing) import GHC.Exts (Down(..))-import Data.List (nub, sortBy, maximumBy, dropWhile, dropWhileEnd)+import Data.List (nub, sortBy, maximumBy, dropWhileEnd) import System.Console.Docopt.ParseUtils import System.Console.Docopt.Types
docopt.cabal view
@@ -1,5 +1,5 @@ name: docopt-version: 0.7.0.6+version: 0.7.0.7 synopsis: A command-line interface parser that will make you smile description: Docopt parses command-line interface usage text that adheres to a familiar syntax, and from it builds a command-line argument parser that will ensure your program is invoked correctly with the available options specified in the usage text. This allows the developer to write a usage text and get an argument parser for free. @@ -34,7 +34,6 @@ Build with QuasiQuoter usage parsers, which requires Template Haskell library- default-language: Haskell2010 exposed-modules: System.Console.Docopt.NoTH other-modules: System.Console.Docopt.ApplicativeParsec@@ -58,11 +57,11 @@ exposed-modules: System.Console.Docopt other-modules: System.Console.Docopt.QQ System.Console.Docopt.QQ.Instances- build-depends: template-haskell >= 2.15.0 && < 2.16,- th-lift >= 0.8.2 && < 0.9+ build-depends: template-haskell >= 2.15.0 && < 2.18 + default-language: Haskell2010+ test-suite tests- default-language: Haskell2010 type: exitcode-stdio-1.0 hs-source-dirs: ./, test main-is: LangAgnosticTests.hs@@ -84,9 +83,9 @@ aeson, bytestring, text,- template-haskell >= 2.15.0 && < 2.16,- th-lift >= 0.8.2 && < 0.9+ template-haskell >= 2.15.0 && < 2.18 + other-modules: System.Console.Docopt System.Console.Docopt.ApplicativeParsec System.Console.Docopt.ParseUtils@@ -97,3 +96,5 @@ System.Console.Docopt.QQ System.Console.Docopt.QQ.Instances Paths_docopt++ default-language: Haskell2010