optima-0.4: Simple command line interface arguments parser

Safe HaskellNone
LanguageHaskell2010

Optima

Contents

Synopsis

IO

params Source #

Arguments

:: Text

Description of the application

-> Params a 
-> IO a 

Execute the parameters parser in IO, throwing an exception if anything goes wrong.

Params

data Params a Source #

Parameters product parser. Should be used for composition of all application parameters.

Instances
Functor Params Source # 
Instance details

Defined in Optima

Methods

fmap :: (a -> b) -> Params a -> Params b #

(<$) :: a -> Params b -> Params a #

Applicative Params Source # 
Instance details

Defined in Optima

Methods

pure :: a -> Params a #

(<*>) :: Params (a -> b) -> Params a -> Params b #

liftA2 :: (a -> b -> c) -> Params a -> Params b -> Params c #

(*>) :: Params a -> Params b -> Params b #

(<*) :: Params a -> Params b -> Params a #

Alternative Params Source # 
Instance details

Defined in Optima

Methods

empty :: Params a #

(<|>) :: Params a -> Params a -> Params a #

some :: Params a -> Params [a] #

many :: Params a -> Params [a] #

param Source #

Arguments

:: Maybe Char

Single-char name

-> Text

Long name

-> Param a 
-> Params a 

Lift a single parameter parser.

group Source #

Arguments

:: Text

Prefix for the long names of the parameters. If empty, then there'll be no prefixing

-> ParamGroup a 
-> Params a 

Lift a parameter group parser.

The param group cannot use short names, only long names.

ParamGroup

data ParamGroup a Source #

Parameter group, which gets identified by prefixing the names.

Should be used to define parameters, which only make sense in combination. E.g., a server config can be defined by providing port and host together.

Instances
Functor ParamGroup Source # 
Instance details

Defined in Optima

Methods

fmap :: (a -> b) -> ParamGroup a -> ParamGroup b #

(<$) :: a -> ParamGroup b -> ParamGroup a #

Applicative ParamGroup Source # 
Instance details

Defined in Optima

Methods

pure :: a -> ParamGroup a #

(<*>) :: ParamGroup (a -> b) -> ParamGroup a -> ParamGroup b #

liftA2 :: (a -> b -> c) -> ParamGroup a -> ParamGroup b -> ParamGroup c #

(*>) :: ParamGroup a -> ParamGroup b -> ParamGroup b #

(<*) :: ParamGroup a -> ParamGroup b -> ParamGroup a #

Alternative ParamGroup Source # 
Instance details

Defined in Optima

member Source #

Arguments

:: Text

Long name of the parameter

-> Param a 
-> ParamGroup a 

Lift a param parser into parameter group.

subgroup Source #

Arguments

:: Text

Long name prefix

-> ParamGroup a 
-> ParamGroup a 

Unite a group by a shared prefix.

Param

data Param a Source #

Parameter parser.

Includes the description of the parameter.

Instances
Functor Param Source # 
Instance details

Defined in Optima

Methods

fmap :: (a -> b) -> Param a -> Param b #

(<$) :: a -> Param b -> Param a #

value Source #

Arguments

:: Text

Description. Can be empty

-> Default a

Default value

-> ValueFormat a

Value format

-> Value a 
-> Param a 

Create a single parameter parser from a value parser and meta information.

flag Source #

Arguments

:: Text

Description. Can be empty

-> Param () 

A parameter with no value. Fails if it's not present. Thus it can be composed using Alternative.

Value

data Value a Source #

Parameter value parser.

Instances
Monad Value Source # 
Instance details

Defined in Optima

Methods

(>>=) :: Value a -> (a -> Value b) -> Value b #

(>>) :: Value a -> Value b -> Value b #

return :: a -> Value a #

fail :: String -> Value a #

Functor Value Source # 
Instance details

Defined in Optima

Methods

fmap :: (a -> b) -> Value a -> Value b #

(<$) :: a -> Value b -> Value a #

MonadFail Value Source # 
Instance details

Defined in Optima

Methods

fail :: String -> Value a #

Applicative Value Source # 
Instance details

Defined in Optima

Methods

pure :: a -> Value a #

(<*>) :: Value (a -> b) -> Value a -> Value b #

liftA2 :: (a -> b -> c) -> Value a -> Value b -> Value c #

(*>) :: Value a -> Value b -> Value b #

(<*) :: Value a -> Value b -> Value a #

Alternative Value Source # 
Instance details

Defined in Optima

Methods

empty :: Value a #

(<|>) :: Value a -> Value a -> Value a #

some :: Value a -> Value [a] #

many :: Value a -> Value [a] #

MonadPlus Value Source # 
Instance details

Defined in Optima

Methods

mzero :: Value a #

mplus :: Value a -> Value a -> Value a #

explicitlyParsed :: Parser a -> Value a Source #

Lift an Attoparsec parser into value parser.

implicitlyParsed :: LenientParser a => Value a Source #

Lift an implicit lenient Attoparsec parser into value parser.

Default

data Default a Source #

Default value with its textual representation.

Instances
Functor Default Source # 
Instance details

Defined in Optima

Methods

fmap :: (a -> b) -> Default a -> Default b #

(<$) :: a -> Default b -> Default a #

explicitlyRepresented :: (a -> Text) -> a -> Default a Source #

Provide a default value with explicit textual representation.

showable :: Show a => a -> Default a Source #

Provide a default value with textual representation formed using the implicit Show instance.

defaultless :: Default a Source #

Provide no default value.

ValueFormat

data ValueFormat a Source #

Parameter description.

Instances
Functor ValueFormat Source # 
Instance details

Defined in Optima

Methods

fmap :: (a -> b) -> ValueFormat a -> ValueFormat b #

(<$) :: a -> ValueFormat b -> ValueFormat a #

formattedByEnum :: (Bounded a, Enum a) => (a -> Text) -> ValueFormat a Source #

Derive value format specification from the Enum instance and explicit mapping of values to their representations.

formattedByEnumUsingShow :: (Bounded a, Enum a, Show a) => ValueFormat a Source #

Derive value format specification from the Enum and Show instances.

unformatted :: ValueFormat a Source #

Avoid specifying the format.