psb/app/Markdown/Data.hs
2025-05-09 20:08:42 -04:00

30 lines
742 B
Haskell

{-# LANGUAGE RankNTypes, FlexibleContexts #-}
module Markdown.Data
( MarkDownElement,
MListItem,
Parser,
)
where
import Data.Text
import Text.Parsec
-- modified version of https://github.com/tusharad/markdown-parser
data MarkDownElement
= MHeading Int MarkDownElement
| MParagraph MarkDownElement
| MBold MarkDownElement
| MItalic MarkDownElement
| MBoldItalic MarkDownElement
| MLink MarkDownElement Text
| MLine [MarkDownElement]
| MUnorderedList [MListItem]
| MOrderedList [MListItem]
| Only Text -- Bottom of all types
deriving (Eq, Show)
data MListItem = MListItem MarkDownElement [MarkDownElement]
deriving (Eq, Show)
type Parser v = forall s u m. (Monad m, Stream s m Char) => ParsecT s u m v