    module WithCli.Modifier.Types where

    data Modifiers = Modifiers {
      Modifiers -> [(String, String)]
    shortOptions :: [(String, [Char])],
      Modifiers -> String -> String
    renaming :: String -> String,
      Modifiers -> Maybe (String, String)
    positionalArgumentsField :: Maybe (String, String),
      Modifiers -> [(String, String)]
    helpTexts :: [(String, String)],
      Modifiers -> Maybe String
    version :: Maybe String
     }

    getVersion :: Modifiers -> Maybe String
    getVersion :: Modifiers -> Maybe String
    getVersion Modifiers
    modifiers = Modifiers -> Maybe String
    version Modifiers
    modifiers

    isPositionalArgumentsField :: Modifiers -> String -> Bool
    isPositionalArgumentsField :: Modifiers -> String -> Bool
    isPositionalArgumentsField Modifiers
    modifiers String
    field =
      Bool
    -> ((String, String) -> Bool) -> Maybe (String, String) -> Bool
    forall b a. b -> (a -> b) -> Maybe a -> b
    maybe Bool
    False ((String
    field String -> String -> Bool
    forall a. Eq a => a -> a -> Bool
    ==) (String -> Bool)
    -> ((String, String) -> String) -> (String, String) -> Bool
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . (String, String) -> String
    forall a b. (a, b) -> a
    fst) (Modifiers -> Maybe (String, String)
    positionalArgumentsField Modifiers
    modifiers)

    getPositionalArgumentType :: Modifiers -> Maybe String
    getPositionalArgumentType :: Modifiers -> Maybe String
    getPositionalArgumentType = ((String, String) -> String)
    -> Maybe (String, String) -> Maybe String
    forall a b. (a -> b) -> Maybe a -> Maybe b
    forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
    fmap (String, String) -> String
    forall a b. (a, b) -> b
    snd (Maybe (String, String) -> Maybe String)
    -> (Modifiers -> Maybe (String, String))
    -> Modifiers
    -> Maybe String
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . Modifiers -> Maybe (String, String)
    positionalArgumentsField