calamity-commands-0.1.0.0: CalamityCommands/Handler.hs
-- | A command handler
module CalamityCommands.Handler (CommandHandler (..)) where
import CalamityCommands.AliasType
import CalamityCommands.Command
import CalamityCommands.Group
import qualified Data.HashMap.Lazy as LH
import qualified Data.Text as S
import GHC.Generics
import TextShow
import qualified TextShow.Generic as TSG
data CommandHandler m c a = CommandHandler
{ -- | Top level groups
groups :: LH.HashMap S.Text (Group m c a, AliasType)
, -- | Top level commands
commands :: LH.HashMap S.Text (Command m c a, AliasType)
}
deriving (Generic)
data CommandHandlerS m c a = CommandHandlerS
{ groups :: [(S.Text, (Group m c a, AliasType))]
, commands :: [(S.Text, (Command m c a, AliasType))]
}
deriving (Show, Generic)
deriving (TextShow) via TSG.FromGeneric (CommandHandlerS m c a)
instance Show (CommandHandler m c a) where
showsPrec d CommandHandler{groups, commands} = showsPrec d $ CommandHandlerS (LH.toList groups) (LH.toList commands)
instance TextShow (CommandHandler m c a) where
showbPrec d CommandHandler{groups, commands} = showbPrec d $ CommandHandlerS (LH.toList groups) (LH.toList commands)