module Text.GentleMark.Term ( Type(..), Term(..), tagName, tagOptions, tagBody ) where
data Type = Toplevel | Textual
data Term :: Type -> * where
Text :: String -> Term Textual
Bold :: [Term Textual] -> Term Textual
Italic :: [Term Textual] -> Term Textual
Underlined :: [Term Textual] -> Term Textual
Striked :: [Term Textual] -> Term Textual
Spoiler :: [Term Textual] -> Term Textual
Latex :: String -> Term Textual
Monospace :: String -> Term Textual
Reference :: String -> Term Textual
Hyperlink :: String -> Term Textual
Tag :: String -> [String] -> String -> Term Textual
Quote :: String -> Term Toplevel
UList :: [[Term Textual]] -> Term Toplevel
OList :: [(Integer, [Term Textual])] -> Term Toplevel
Paragraph :: [Term Textual] -> Term Toplevel
deriving instance Eq (Term t)
deriving instance Ord (Term t)
deriving instance Show (Term t)
tagName :: Term Textual -> String
tagName (Tag name _ _) = name
tagName _ = error "Not a Tag-Term!"
tagOptions :: Term Textual -> [String]
tagOptions (Tag _ options _) = options
tagOptions _ = error "Not a Tag-Term!"
tagBody :: Term Textual -> String
tagBody (Tag _ _ body) = body
tagBody _ = error "Not a Tag-Term!"