{-# LANGUAGE TemplateHaskell #-}

-- | Parameter info for a command
module CalamityCommands.ParameterInfo (
  ParameterInfo (..),
) where

import Data.Text qualified as S
import Data.Typeable
import Optics.TH (makeFieldLabelsNoPrefix)
import TextShow.TH (deriveTextShow)

data ParameterInfo = ParameterInfo
  { ParameterInfo -> Maybe Text
name :: Maybe S.Text
  , ParameterInfo -> TypeRep
type_ :: TypeRep
  , ParameterInfo -> Text
typeDescription :: S.Text
  }
  deriving (Int -> ParameterInfo -> ShowS
[ParameterInfo] -> ShowS
ParameterInfo -> String
(Int -> ParameterInfo -> ShowS)
-> (ParameterInfo -> String)
-> ([ParameterInfo] -> ShowS)
-> Show ParameterInfo
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ParameterInfo -> ShowS
showsPrec :: Int -> ParameterInfo -> ShowS
$cshow :: ParameterInfo -> String
show :: ParameterInfo -> String
$cshowList :: [ParameterInfo] -> ShowS
showList :: [ParameterInfo] -> ShowS
Show)

$(deriveTextShow ''ParameterInfo)
$(makeFieldLabelsNoPrefix ''ParameterInfo)