From bb6cef20b82ef7a7f2d49f3ef6dc1a7ce880b5f0 Mon Sep 17 00:00:00 2001 From: Mateusz Kowalczyk Date: Tue, 9 Jul 2013 14:24:10 +0100 Subject: One pass parser and tests. We remove the HTML test as it is no longer necessary. We cover the test case in spec tests and other HTML tests but keeping this around fails: this is because the new parser has different semantics there. In fact, I suspect the original behaviour was a bug that wasn't caught/fixed but simply included as-is during the testing. --- src/Haddock/Doc.hs | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) (limited to 'src/Haddock/Doc.hs') diff --git a/src/Haddock/Doc.hs b/src/Haddock/Doc.hs index 18555cfb..4d68c554 100644 --- a/src/Haddock/Doc.hs +++ b/src/Haddock/Doc.hs @@ -1,14 +1,27 @@ +{-# OPTIONS_GHC -fno-warn-orphans #-} module Haddock.Doc ( docAppend, docParagraph, - combineStringNodes + combineStringNodes, + combineDocumentation ) where - +import Data.Maybe +import Data.Monoid import Haddock.Types import Data.Char (isSpace) import Control.Arrow ((***)) +-- We put it here so that we can avoid a circular import +-- anything relevant imports this module anyway +instance Monoid (Doc id) where + mempty = DocEmpty + mappend = docAppend + +combineDocumentation :: Documentation name -> Maybe (Doc name) +combineDocumentation (Documentation Nothing Nothing) = Nothing +combineDocumentation (Documentation mDoc mWarning) = Just (fromMaybe mempty mWarning `mappend` fromMaybe mempty mDoc) + -- used to make parsing easier; we group the list items later docAppend :: Doc id -> Doc id -> Doc id docAppend (DocUnorderedList ds1) (DocUnorderedList ds2) @@ -85,4 +98,7 @@ combineStringNodes x = x tryjoin :: Doc id -> Doc id tryjoin (DocAppend (DocString x) (DocString y)) = DocString (x ++ y) +tryjoin (DocAppend (DocString x) (DocAppend (DocString y) z)) = DocAppend (DocString (x ++ y)) z +tryjoin (DocAppend (DocAppend x (DocString y)) (DocString z)) + = tryjoin (DocAppend (combineStringNodes x) (DocString $ y ++ z)) tryjoin x = x -- cgit v1.2.3