packages feed

mdoc-0.1.0.0: src/Mdoc/Gen/EnvVar.hs

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

import Mdoc.Prelude

import Data.List (intercalate)
import Mdoc.Gen.Argument
import Mdoc.MacroArg
import Mdoc.MacroName

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

renderEnv :: EnvVar -> [MacroArg]
renderEnv e = intercalate [Bare ","] $ map ev (init e.names) <> [ev_ $ last e.names]
 where
  -- All but last Ev without arg
  ev n = [Callable Ev, Bare $ esc $ pack n]

  -- Include Arg, long-style on final Ev only
  ev_ n = case e.argument of
    Nothing -> ev n
    Just argument -> Callable Ev : renderArgumentForLong n argument