cmdargs 0.10.2 → 0.10.3
raw patch · 4 files changed
+28/−7 lines, 4 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- System/Console/CmdArgs/Implicit.hs +7/−0
- System/Console/CmdArgs/Implicit/Local.hs +8/−4
- System/Console/CmdArgs/Test/Implicit/Tests.hs +12/−2
- cmdargs.cabal +1/−1
System/Console/CmdArgs/Implicit.hs view
@@ -216,6 +216,13 @@ -- > cmdArgs $ Mode {state = enum [On &= help "Turn on",Off &= help "Turn off"]} -- > --on Turn on -- > --off Turn off+--+-- This annotation can be used to allow multiple flags within a field:+--+-- > data Mode = Mode {state :: [State]}+-- > cmdArgs $ Mode {state = enum [[] &= ignore, [On] &= help "Turn on", [Off] &= help "Turn off"]}+--+-- Now @--on --off@ would produce @Mode [On,Off]@. enum :: Data val => [val] -> val enum = many
System/Console/CmdArgs/Implicit/Local.hs view
@@ -15,6 +15,7 @@ import System.Console.CmdArgs.Explicit import System.Console.CmdArgs.Annotate import System.Console.CmdArgs.Default+import qualified Data.Generics.Any.Prelude as A import Control.Monad import Data.Char@@ -117,13 +118,16 @@ flag_ name (Ann a b) = map (flagAnn a) $ flag_ name b flag_ name (Value x) = [def{flagField=name, flagFlag = remap embed reembed $ value_ name x}] flag_ name x@Ctor{} = flag_ name $ Value $ fromCapture x-flag_ name (Many xs) = map (enum_ name) xs+flag_ name (Many xs) = concatMap (enum_ name) xs flag_ name x = errFlag name $ show x -enum_ :: String -> Capture Ann -> Flag_-enum_ name (Ann a b) = flagAnn a $ enum_ name b-enum_ name (Value x) = def{flagField=name, flagFlag = flagNone [] (fmap $ setField (name,x)) "", flagEnum=Just $ ctor x}+enum_ :: String -> Capture Ann -> [Flag_]+enum_ name (Ann Ignore _) = []+enum_ name (Ann a b) = map (flagAnn a) $ enum_ name b+enum_ name (Value x) = [def{flagField=name, flagFlag = flagNone [] (fmap upd) "", flagEnum=Just $ ctor x}]+ where upd v | not (A.isString x) && A.isList x = setField (name, getField name v `A.append` x) v+ | otherwise = setField (name,x) v enum_ name x@Ctor{} = enum_ name $ Value $ fromCapture x enum_ name x = errFlag name $ show x
System/Console/CmdArgs/Test/Implicit/Tests.hs view
@@ -314,15 +314,25 @@ ["test","--","@foo"] === Test17 ["test","@foo"] +data Debuggable = This | That deriving (Eq,Show,Data,Typeable)+data Test18 = Test18 {test18_ :: [Debuggable]} deriving (Eq,Show,Data,Typeable)++mode18 = cmdArgsMode $ Test18 $ enum [[] &= ignore, [This] &= name "debug-this", [That] &= name "debug-that"]++test18 = do+ let Tester{..} = tester "Test18" mode18+ [] === Test18 []+ ["--debug-this","--debug-that","--debug-this"] === Test18 [This,That,This]+ -- For some reason, these must be at the end, otherwise the Template Haskell -- stage restriction kicks in. test = test1 >> test2 >> test3 >> test4 >> test5 >> test6 >> test7 >> test8 >> test9 >> test10 >>- test11 >> test12 >> test13 >> test14 >> test15 >> test16+ test11 >> test12 >> test13 >> test14 >> test15 >> test16 >> test18 demos = zipWith f [1..] [toDemo mode1, toDemo mode2, toDemo mode3, toDemo mode4, toDemo mode5, toDemo mode6 ,toDemo mode7, toDemo mode8, toDemo mode9, toDemo mode10, toDemo mode11, toDemo mode12- ,toDemo mode13, toDemo mode14, toDemo mode15, toDemo mode16, toDemo mode17]+ ,toDemo mode13, toDemo mode14, toDemo mode15, toDemo mode16, toDemo mode17, toDemo mode18] where f i x = x{modeHelp = "Testing various corner cases (" ++ show i ++ ")"}
cmdargs.cabal view
@@ -1,7 +1,7 @@ cabal-version: >= 1.6 build-type: Simple name: cmdargs-version: 0.10.2+version: 0.10.3 license: BSD3 license-file: LICENSE category: Console