alms-0.4.11: src/Message/AST.hs
{-# LANGUAGE
EmptyDataDecls,
GADTs
#-}
module Message.AST (
Message(..),
H, V, StackStyle(..),
wordsMsg, quoteMsg, pprMsg, showMsg, emptyMsg,
) where
import PprClass
-- | Simple message markup
data Message d where
Words :: String -> Message d
Flow :: [Message H] -> Message d
Exact :: String -> Message d
Surround :: String -> String -> Message d -> Message d
Quote :: Message d -> Message d
Stack :: StackStyle -> [Message V] -> Message V
Table :: [(String, Message V)] -> Message V
Indent :: Message V -> Message V
Printable :: Ppr a => Int -> a -> Message d
Showable :: Show a => a -> Message d
AntiMsg :: String -> String -> Message d
data H
data V
-- | Types of lists
data StackStyle
= Numbered
| Bulleted
| Separated
| Broken
--
-- Public AST builders
--
wordsMsg :: String -> Message d
wordsMsg = Words
quoteMsg :: Message d -> Message d
quoteMsg = Quote
pprMsg :: Ppr a => a -> Message d
pprMsg = Printable (-1)
showMsg :: Show a => a -> Message d
showMsg = Showable
emptyMsg :: Message d
emptyMsg = Words ""