summaryrefslogtreecommitdiff
path: root/src/Text/Pandoc/Definition.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Text/Pandoc/Definition.hs')
-rw-r--r--src/Text/Pandoc/Definition.hs50
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)