diff options
author | David Lazar <lazar6@illinois.edu> | 2013-03-28 14:53:10 -0700 |
---|---|---|
committer | David Lazar <lazar6@illinois.edu> | 2013-03-28 14:53:10 -0700 |
commit | 18459b95bab91b2a1d59e888045d555494d94bc8 (patch) | |
tree | 1974f9b339f37f9bdb90e309388ef5a436f7bcfe /src/Text/Pandoc/Readers/Haddock.hs | |
parent | ee0fc19bc54208c5d8828eab872e3bbe303c47bf (diff) |
Add reader for Haddock markup based on Haddock's own lexer/parser.
Diffstat (limited to 'src/Text/Pandoc/Readers/Haddock.hs')
-rw-r--r-- | src/Text/Pandoc/Readers/Haddock.hs | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/src/Text/Pandoc/Readers/Haddock.hs b/src/Text/Pandoc/Readers/Haddock.hs new file mode 100644 index 000000000..49154b0ca --- /dev/null +++ b/src/Text/Pandoc/Readers/Haddock.hs @@ -0,0 +1,39 @@ +{- | + Module : Text.Pandoc.Readers.Haddock + Copyright : Copyright (C) 2013 David Lazar + License : GNU GPL, version 2 or above + + Maintainer : David Lazar <lazar6@illinois.edu> + Stability : alpha + +Conversion of Haddock markup to 'Pandoc' document. +-} +module Text.Pandoc.Readers.Haddock + ( readHaddock + ) where + +import Text.Pandoc.Builder +import Text.Pandoc.Options +import Text.Pandoc.Readers.Haddock.Lex +import Text.Pandoc.Readers.Haddock.Parse + +-- | Parse Haddock markup and return a 'Pandoc' document. +readHaddock :: ReaderOptions -- ^ Reader options + -> String -- ^ String to parse + -> Pandoc +readHaddock _ s = Pandoc (Meta [] [] []) blocks + where + blocks = case parseParas (tokenise s (0,0)) of + Nothing -> [] + Just x -> mergeLists (toList x) + +-- similar to 'docAppend' in Haddock.Doc +mergeLists :: [Block] -> [Block] +mergeLists (BulletList xs : BulletList ys : blocks) + = mergeLists (BulletList (xs ++ ys) : blocks) +mergeLists (OrderedList _ xs : OrderedList a ys : blocks) + = mergeLists (OrderedList a (xs ++ ys) : blocks) +mergeLists (DefinitionList xs : DefinitionList ys : blocks) + = mergeLists (DefinitionList (xs ++ ys) : blocks) +mergeLists (x : blocks) = x : mergeLists blocks +mergeLists [] = [] |