packages feed

mdoc-0.2.0.0: src/Mdoc/Data/EnvVar.hs

-- |
--
-- Module      : Mdoc.Data.EnvVar
-- Copyright   : (c) 2026 Patrick Brisbin
-- License     : AGPL-3
-- Maintainer  : pbrisbin@gmail.com
-- Stability   : experimental
-- Portability : POSIX
module Mdoc.Data.EnvVar
  ( EnvVar (..)
  ) where

import Mdoc.Prelude

import Mdoc.Data.Argument
import Mdoc.Pretty

data EnvVar = EnvVar
  { names :: NonEmpty String
  , argument :: Maybe Argument
  }
  deriving stock (Eq, Ord, Show)
  deriving (ToJSON) via (Rendered EnvVar)

instance Pretty EnvVar where
  pretty e =
    mconcat
      $ punctuate comma
      $ map ev (init e.names) <> [evArg $ last e.names]
   where
    -- All but last Ev without arg
    ev :: String -> Doc ann
    ev n = "Ev" <+> pretty (esc $ pack n)

    -- Include Arg, long-style on final Ev only
    evArg :: String -> Doc ann
    evArg n = maybe (ev n) (("Ev" <+>) . pretty . LongArg n) e.argument