module Data.Help (
        Help(..),
        indent, indentHelp, detailed, indented
        ) where

import Data.Text (Text)
import qualified Data.Text as T

class Help a where
        brief :: a -> Text
        help :: a -> [Text]

indent :: Text -> Text
indent = T.cons '\t'

indentHelp :: [Text] -> [Text]
indentHelp [] = []
indentHelp (h:hs) = h : map indent hs

detailed :: Help a => a -> [Text]
detailed v = brief v : help v

indented :: Help a => a -> [Text]
indented = indentHelp . detailed