{-# LANGUAGE OverloadedStrings #-}
module Matterhorn.HelpTopics
  ( helpTopics
  , lookupHelpTopic
  , themeHelpTopic
  , mainHelpTopic
  )
where

import Prelude ()
import Matterhorn.Prelude

import Matterhorn.Types


helpTopics :: [HelpTopic]
helpTopics :: [HelpTopic]
helpTopics =
    [ HelpTopic
mainHelpTopic
    , HelpTopic
scriptHelpTopic
    , HelpTopic
themeHelpTopic
    , HelpTopic
keybindingHelpTopic
    , HelpTopic
syntaxHighlightingHelpTopic
    ]

mainHelpTopic :: HelpTopic
mainHelpTopic :: HelpTopic
mainHelpTopic =
    Text -> Text -> HelpScreen -> Name -> HelpTopic
HelpTopic Text
"main" Text
"This help page" HelpScreen
MainHelp Name
HelpText

scriptHelpTopic :: HelpTopic
scriptHelpTopic :: HelpTopic
scriptHelpTopic =
    Text -> Text -> HelpScreen -> Name -> HelpTopic
HelpTopic Text
"scripts" Text
"Help on available scripts" HelpScreen
ScriptHelp Name
ScriptHelpText

themeHelpTopic :: HelpTopic
themeHelpTopic :: HelpTopic
themeHelpTopic =
    Text -> Text -> HelpScreen -> Name -> HelpTopic
HelpTopic Text
"themes" Text
"Help on color themes" HelpScreen
ThemeHelp Name
ThemeHelpText

keybindingHelpTopic :: HelpTopic
keybindingHelpTopic :: HelpTopic
keybindingHelpTopic =
    Text -> Text -> HelpScreen -> Name -> HelpTopic
HelpTopic Text
"keybindings" Text
"Help on overriding keybindings"
      HelpScreen
KeybindingHelp Name
KeybindingHelpText

syntaxHighlightingHelpTopic :: HelpTopic
syntaxHighlightingHelpTopic :: HelpTopic
syntaxHighlightingHelpTopic =
    Text -> Text -> HelpScreen -> Name -> HelpTopic
HelpTopic Text
"syntax" Text
"Help on syntax highlighing"
      HelpScreen
SyntaxHighlightHelp Name
SyntaxHighlightHelpText

lookupHelpTopic :: Text -> Maybe HelpTopic
lookupHelpTopic :: Text -> Maybe HelpTopic
lookupHelpTopic Text
topic =
    [HelpTopic] -> Maybe HelpTopic
forall a. [a] -> Maybe a
listToMaybe ([HelpTopic] -> Maybe HelpTopic) -> [HelpTopic] -> Maybe HelpTopic
forall a b. (a -> b) -> a -> b
$ (HelpTopic -> Bool) -> [HelpTopic] -> [HelpTopic]
forall a. (a -> Bool) -> [a] -> [a]
filter ((Text -> Text -> Bool
forall a. Eq a => a -> a -> Bool
== Text
topic) (Text -> Bool) -> (HelpTopic -> Text) -> HelpTopic -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. HelpTopic -> Text
helpTopicName) [HelpTopic]
helpTopics