mdoc-0.1.0.0: src/Mdoc/Gen/Argument.hs
-- |
--
-- Module : Mdoc.Gen.Argument
-- Copyright : (c) 2026 Patrick Brisbin
-- License : AGPL-3
-- Maintainer : pbrisbin@gmail.com
-- Stability : experimental
-- Portability : POSIX
module Mdoc.Gen.Argument
( Argument (..)
, renderArgument
, renderArgumentForShort
, renderArgumentForLong
) where
import Mdoc.Prelude
import Data.Text qualified as T
import Mdoc.Gen.Optionality
import Mdoc.MacroArg
import Mdoc.MacroName
data Argument = Argument
{ schema :: String
, optionality :: Optionality
}
deriving stock (Eq, Show)
instance IsString Argument where
fromString schema =
Argument
{ schema
, optionality = Required
}
renderArgument :: Argument -> [MacroArg]
renderArgument Argument {schema} = [Callable Ar, Bare $ esc $ pack schema]
renderArgumentForShort :: Char -> Argument -> [MacroArg]
renderArgumentForShort c arg@Argument {optionality} =
case optionality of
Required -> Bare (esc $ T.singleton c) : renderArgument arg
_ -> [Bare $ esc $ T.singleton c, Callable Op] <> renderArgument arg
renderArgumentForLong :: String -> Argument -> [MacroArg]
renderArgumentForLong x arg@Argument {optionality} =
case optionality of
Required ->
[ Bare $ esc $ pack $ x <> "="
, Callable Ns
]
<> renderArgument arg
_ ->
[ Bare $ esc $ pack x
, Callable Ns
, Callable Op
, Callable Cm
, Bare "="
, Callable Ns
]
<> renderArgument arg