-- | A command handler
module Calamity.Commands.Handler
    ( CommandHandler(..) ) where

import           Calamity.Commands.AliasType
import           Calamity.Commands.Command
import           Calamity.Commands.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 = CommandHandler
  { CommandHandler -> HashMap Text (Group, AliasType)
groups   :: LH.HashMap S.Text (Group, AliasType)
    -- ^ Top level groups
  , CommandHandler -> HashMap Text (Command, AliasType)
commands :: LH.HashMap S.Text (Command, AliasType)
    -- ^ Top level commands
  }
  deriving ( Int -> CommandHandler -> ShowS
[CommandHandler] -> ShowS
CommandHandler -> String
(Int -> CommandHandler -> ShowS)
-> (CommandHandler -> String)
-> ([CommandHandler] -> ShowS)
-> Show CommandHandler
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CommandHandler] -> ShowS
$cshowList :: [CommandHandler] -> ShowS
show :: CommandHandler -> String
$cshow :: CommandHandler -> String
showsPrec :: Int -> CommandHandler -> ShowS
$cshowsPrec :: Int -> CommandHandler -> ShowS
Show, (forall x. CommandHandler -> Rep CommandHandler x)
-> (forall x. Rep CommandHandler x -> CommandHandler)
-> Generic CommandHandler
forall x. Rep CommandHandler x -> CommandHandler
forall x. CommandHandler -> Rep CommandHandler x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CommandHandler x -> CommandHandler
$cfrom :: forall x. CommandHandler -> Rep CommandHandler x
Generic )
  deriving ( Int -> CommandHandler -> Builder
Int -> CommandHandler -> Text
Int -> CommandHandler -> Text
[CommandHandler] -> Builder
[CommandHandler] -> Text
[CommandHandler] -> Text
CommandHandler -> Builder
CommandHandler -> Text
CommandHandler -> Text
(Int -> CommandHandler -> Builder)
-> (CommandHandler -> Builder)
-> ([CommandHandler] -> Builder)
-> (Int -> CommandHandler -> Text)
-> (CommandHandler -> Text)
-> ([CommandHandler] -> Text)
-> (Int -> CommandHandler -> Text)
-> (CommandHandler -> Text)
-> ([CommandHandler] -> Text)
-> TextShow CommandHandler
forall a.
(Int -> a -> Builder)
-> (a -> Builder)
-> ([a] -> Builder)
-> (Int -> a -> Text)
-> (a -> Text)
-> ([a] -> Text)
-> (Int -> a -> Text)
-> (a -> Text)
-> ([a] -> Text)
-> TextShow a
showtlList :: [CommandHandler] -> Text
$cshowtlList :: [CommandHandler] -> Text
showtl :: CommandHandler -> Text
$cshowtl :: CommandHandler -> Text
showtlPrec :: Int -> CommandHandler -> Text
$cshowtlPrec :: Int -> CommandHandler -> Text
showtList :: [CommandHandler] -> Text
$cshowtList :: [CommandHandler] -> Text
showt :: CommandHandler -> Text
$cshowt :: CommandHandler -> Text
showtPrec :: Int -> CommandHandler -> Text
$cshowtPrec :: Int -> CommandHandler -> Text
showbList :: [CommandHandler] -> Builder
$cshowbList :: [CommandHandler] -> Builder
showb :: CommandHandler -> Builder
$cshowb :: CommandHandler -> Builder
showbPrec :: Int -> CommandHandler -> Builder
$cshowbPrec :: Int -> CommandHandler -> Builder
TextShow ) via TSG.FromGeneric CommandHandler