diff options
Diffstat (limited to 'src/Text/Pandoc/Definition.hs')
-rw-r--r-- | src/Text/Pandoc/Definition.hs | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/Text/Pandoc/Definition.hs b/src/Text/Pandoc/Definition.hs new file mode 100644 index 000000000..08ff3905e --- /dev/null +++ b/src/Text/Pandoc/Definition.hs @@ -0,0 +1,50 @@ +-- | Definition of 'Pandoc' data structure for format-neutral representation +-- of documents. +module Text.Pandoc.Definition where + +data Pandoc = Pandoc Meta [Block] deriving (Eq, Read, Show) + +-- | Bibliographic information for the document: title (list of 'Inline'), +-- authors (list of strings), date (string). +data Meta = Meta [Inline] -- title + [String] -- authors + String -- date + deriving (Eq, Show, Read) + +-- | Block element. +data Block + = Plain [Inline] -- ^ Plain text, not a paragraph + | Blank -- ^ A blank line + | Null -- ^ Nothing + | Para [Inline] -- ^ Paragraph + | Key [Inline] Target -- ^ Reference key: name (list of inlines) and 'Target' + | CodeBlock String -- ^ Code block (literal) + | RawHtml String -- ^ Raw HTML block (literal) + | BlockQuote [Block] -- ^ Block quote (list of blocks) + | OrderedList [[Block]] -- ^ Ordered list (list of items, each a list of blocks) + | BulletList [[Block]] -- ^ Bullet list (list of items, each a list of blocks) + | Header Int [Inline] -- ^ Header - level (integer) and text (list of inlines) + | HorizontalRule -- ^ Horizontal rule + | Note String [Block] -- ^ Footnote or endnote - reference (string), text (list of blocks) + deriving (Eq, Read, Show) + +-- | Target for a link: either a URL or an indirect (labeled) reference. +data Target + = Src String String -- ^ First string is URL, second is title + | Ref [Inline] -- ^ Label (list of inlines) for an indirect reference + deriving (Show, Eq, Read) + +-- | Inline elements. +data Inline + = Str String -- ^ Text (string) + | Emph [Inline] -- ^ Emphasized text (list of inlines) + | Strong [Inline] -- ^ Strongly emphasized text (list of inlines) + | Code String -- ^ Inline code (literal) + | Space -- ^ Inter-word space + | LineBreak -- ^ Hard line break + | TeX String -- ^ LaTeX code (literal) + | HtmlInline String -- ^ HTML code (literal) + | Link [Inline] Target -- ^ Hyperlink: text (list of inlines) and target + | Image [Inline] Target -- ^ Image: alternative text (list of inlines) and target + | NoteRef String -- ^ Footnote or endnote reference + deriving (Show, Eq, Read) |