mdoc-0.1.0.2: src/Mdoc/Gen/Optionality.hs
-- |
--
-- Module : Mdoc.Gen.Optionality
-- Copyright : (c) 2026 Patrick Brisbin
-- License : AGPL-3
-- Maintainer : pbrisbin@gmail.com
-- Stability : experimental
-- Portability : POSIX
module Mdoc.Gen.Optionality
( Optionality (..)
, opLine
) where
import Mdoc.Prelude
import Mdoc.MacroArg
import Mdoc.MacroName
import Mdoc.MdocLine
data Optionality
= Optional
| Required
| Defaulted String
deriving stock (Eq, Show)
-- | Render a macro line as @.Op@ or not
--
-- >>> opLine Fl ["A", Ar, "num"] Required
-- .Fl A Ar num
-- -A num
--
-- >>> opLine Fl ["A", Ar, "num"] Optional
-- .Op Fl A Ar num
-- [-A num]
opLine :: MacroName -> [MacroArg] -> Optionality -> MdocLine
opLine n args = \case
Required -> MacroLine n args
_ -> MacroLine Op $ Callable n : args