module EasyArgs (Arg (..), parseArg, parseArgs) where
data Arg
= Dash
| DoubleDash
| Flag Char
| Tag String
| ArgText String
deriving (Arg -> Arg -> Bool
(Arg -> Arg -> Bool) -> (Arg -> Arg -> Bool) -> Eq Arg
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Arg -> Arg -> Bool
$c/= :: Arg -> Arg -> Bool
== :: Arg -> Arg -> Bool
$c== :: Arg -> Arg -> Bool
Eq, Int -> Arg -> ShowS
[Arg] -> ShowS
Arg -> String
(Int -> Arg -> ShowS)
-> (Arg -> String) -> ([Arg] -> ShowS) -> Show Arg
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Arg] -> ShowS
$cshowList :: [Arg] -> ShowS
show :: Arg -> String
$cshow :: Arg -> String
showsPrec :: Int -> Arg -> ShowS
$cshowsPrec :: Int -> Arg -> ShowS
Show)
parseArg :: String -> [Arg]
parseArg :: String -> [Arg]
parseArg String
"-" = [Arg
Dash]
parseArg String
"--" = [Arg
DoubleDash]
parseArg (Char
'-':Char
'-':String
str) = [String -> Arg
Tag String
str]
parseArg (Char
'-':String
str) = (Char -> Arg) -> String -> [Arg]
forall a b. (a -> b) -> [a] -> [b]
map Char -> Arg
Flag String
str
parseArg String
str = [String -> Arg
ArgText String
str]
parseArgs :: [String] -> [Arg]
parseArgs :: [String] -> [Arg]
parseArgs = (String -> [Arg]) -> [String] -> [Arg]
forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b]
concatMap String -> [Arg]
parseArg