diff options
Diffstat (limited to 'src/Haddock/Doc.hs')
| -rw-r--r-- | src/Haddock/Doc.hs | 20 | 
1 files changed, 18 insertions, 2 deletions
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  | 
