{-# LANGUAGE CPP #-} module Agda.Interaction.Options.Help ( Help (..) , helpTopicUsage , string2HelpTopic , allHelpTopics ) where import Data.Tuple ( swap ) import Data.Maybe ( fromMaybe ) import Agda.Interaction.Options.Warnings #include "undefined.h" import Agda.Utils.Impossible -- | Interface to the @help@ function data Help = GeneralHelp -- ^ General usage information | HelpFor HelpTopic -- ^ Specialised usage information about TOPIC deriving (Eq, Show) -- | List of Help Topics -- NOTA BENE: -- You need to add each new topic together with its name to @allHelpTopics@ data HelpTopic = Warning deriving (Eq, Show) allHelpTopics :: [(String, HelpTopic)] allHelpTopics = [("warning", Warning)] -- | Usage information generation helpTopicUsage :: HelpTopic -> String helpTopicUsage tp = case tp of Warning -> usageWarning -- | Conversion functions to strings string2HelpTopic :: String -> Maybe HelpTopic string2HelpTopic str = lookup str allHelpTopics helpTopic2String :: HelpTopic -> String helpTopic2String w = fromMaybe __IMPOSSIBLE__ $ lookup w (map swap allHelpTopics)