glirc-2.40.1: src/Client/Commands/Docs.hs
{-# Language OverloadedStrings, TemplateHaskell #-}
{-|
Module : Client.Commands.Docs
Description : Command documentation
Copyright : (c) TheDaemoness 2023
License : ISC
Maintainer : emertens@gmail.com
This module contains definitions for all of glirc's command docs.
-}
module Client.Commands.Docs
( cmdDoc
, chanopDocs
, chatDocs
, clientDocs
, integrationDocs
, netDocs
, operDocs
, queriesDocs
, togglesDocs
, windowDocs
) where
import Client.Docs (Docs, loadDoc, lookupDoc, makeHeader)
import Language.Haskell.TH (Q, Exp)
import Language.Haskell.TH.Syntax (lift)
cmdDoc :: Docs -> String -> Q Exp
cmdDoc docs key = lookupDoc (makeHeader "Description") ('/':key) docs
-- TODO: Replace each id with something that splits off the command name.
chanopDocs :: Docs
chanopDocs = $(loadDoc id "cmds_chanop" >>= lift)
chatDocs :: Docs
chatDocs = $(loadDoc id "cmds_chat" >>= lift)
clientDocs :: Docs
clientDocs = $(loadDoc id "cmds_client" >>= lift)
integrationDocs :: Docs
integrationDocs = $(loadDoc id "cmds_integration" >>= lift)
netDocs :: Docs
netDocs = $(loadDoc id "cmds_net" >>= lift)
operDocs :: Docs
operDocs = $(loadDoc id "cmds_oper" >>= lift)
queriesDocs :: Docs
queriesDocs = $(loadDoc id "cmds_queries" >>= lift)
togglesDocs :: Docs
togglesDocs = $(loadDoc id "cmds_toggles" >>= lift)
windowDocs :: Docs
windowDocs = $(loadDoc id "cmds_window" >>= lift)