mdoc-0.2.0.0: src/Mdoc/Data/Option.hs
-- |
--
-- Module : Mdoc.Data.Option
-- Copyright : (c) 2026 Patrick Brisbin
-- License : AGPL-3
-- Maintainer : pbrisbin@gmail.com
-- Stability : experimental
-- Portability : POSIX
module Mdoc.Data.Option
( Option (..)
, Option1 (..)
) where
import Mdoc.Prelude
import Mdoc.Data.Argument
import Mdoc.Data.Flag
import Mdoc.Pretty
data Option = Option
{ flag :: Flag
, argument :: Argument
}
deriving stock (Eq, Show)
instance Pretty Option where
pretty o =
mconcat
$ punctuate " , "
$ mapFlag
(\c -> shortArg c o.argument)
(\s -> longArg s o.argument)
o.flag
newtype Option1 = Option1
{ unwrap :: Option
}
instance Pretty Option1 where
pretty (Option1 o) =
mapFlag1
(\c -> shortArg c o.argument)
(\s -> longArg s o.argument)
o.flag
shortArg :: Char -> Argument -> Doc ann
shortArg c argument = "Fl" <+> pretty (ShortArg c argument)
longArg :: String -> Argument -> Doc ann
longArg s argument = "Fl Fl" <+> pretty (LongArg s argument)