Added ShortName type synonym

This commit is contained in:
Gabriel Gonzalez 2015-07-04 10:46:06 -07:00
parent c8d3ebed38
commit e6014004cf

View file

@ -35,6 +35,7 @@ module Turtle.Options
( -- * Types ( -- * Types
Parser Parser
, ArgName , ArgName
, ShortName
, Description , Description
, HelpMessage , HelpMessage
@ -82,13 +83,16 @@ options desc parser = liftIO
{-| The name of a command-line argument {-| The name of a command-line argument
This is used to infer the long name, short name, and metavariable for the This is used to infer the long name and metavariable for the command line
command line flag. For example, an `ArgName` of @\"name\"@ will create a flag. For example, an `ArgName` of @\"name\"@ will create a @--name@ flag
@--name@ flag with a @NAME@ metavariable and a short name of @-n@ with a @NAME@ metavariable
-} -}
newtype ArgName = ArgName { getArgName :: Text } newtype ArgName = ArgName { getArgName :: Text }
deriving (IsString) deriving (IsString)
-- | The short one-character abbreviation for a flag (i.e. @-n@)
type ShortName = Char
{-| A brief description of what your program does {-| A brief description of what your program does
This description will appear in the header of the @--help@ output This description will appear in the header of the @--help@ output
@ -108,7 +112,7 @@ newtype HelpMessage = HelpMessage { getHelpMessage :: Text }
-} -}
switch switch
:: ArgName :: ArgName
-> Char -> ShortName
-> Optional HelpMessage -> Optional HelpMessage
-> Parser Bool -> Parser Bool
switch argName c helpMessage switch argName c helpMessage
@ -122,7 +126,7 @@ switch argName c helpMessage
-} -}
opt :: (Text -> Maybe a) opt :: (Text -> Maybe a)
-> ArgName -> ArgName
-> Char -> ShortName
-> Optional HelpMessage -> Optional HelpMessage
-> Parser a -> Parser a
opt argParse argName c helpMessage opt argParse argName c helpMessage
@ -133,23 +137,23 @@ opt argParse argName c helpMessage
<> foldMap (Opts.help . Text.unpack . getHelpMessage) helpMessage <> foldMap (Opts.help . Text.unpack . getHelpMessage) helpMessage
-- | Parse any type that implements `Read` -- | Parse any type that implements `Read`
optRead :: Read a => ArgName -> Char -> Optional HelpMessage -> Parser a optRead :: Read a => ArgName -> ShortName -> Optional HelpMessage -> Parser a
optRead = opt (readMaybe . Text.unpack) optRead = opt (readMaybe . Text.unpack)
-- | Parse an `Int` as a flag-based option -- | Parse an `Int` as a flag-based option
optInt :: ArgName -> Char -> Optional HelpMessage -> Parser Int optInt :: ArgName -> ShortName -> Optional HelpMessage -> Parser Int
optInt = optRead optInt = optRead
-- | Parse an `Integer` as a flag-based option -- | Parse an `Integer` as a flag-based option
optInteger :: ArgName -> Char -> Optional HelpMessage -> Parser Integer optInteger :: ArgName -> ShortName -> Optional HelpMessage -> Parser Integer
optInteger = optRead optInteger = optRead
-- | Parse a `Double` as a flag-based option -- | Parse a `Double` as a flag-based option
optDouble :: ArgName -> Char -> Optional HelpMessage -> Parser Double optDouble :: ArgName -> ShortName -> Optional HelpMessage -> Parser Double
optDouble = optRead optDouble = optRead
-- | Parse a `Text` value as a flag-based option -- | Parse a `Text` value as a flag-based option
optText :: ArgName -> Char -> Optional HelpMessage -> Parser Text optText :: ArgName -> ShortName -> Optional HelpMessage -> Parser Text
optText = opt Just optText = opt Just
{- | Build a positional argument parser for any type by providing a {- | Build a positional argument parser for any type by providing a