packages feed

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