diff options
Diffstat (limited to 'src/HaddockTypes.hs')
-rw-r--r-- | src/HaddockTypes.hs | 121 |
1 files changed, 2 insertions, 119 deletions
diff --git a/src/HaddockTypes.hs b/src/HaddockTypes.hs index 5af102d4..9c957dd5 100644 --- a/src/HaddockTypes.hs +++ b/src/HaddockTypes.hs @@ -6,20 +6,14 @@ module HaddockTypes ( -- * Module interfaces - NameEnv, Interface(..), ModuleInfo(..), ExportItem(..), ModuleMap, + NameEnv, Interface(..), ExportItem(..), ModuleMap, DocOption(..), - -- * User documentation strings - DocString, GenDoc(..), Doc, ParsedDoc, DocMarkup(..), - markup, mapIdent, - docAppend, docParagraph, ) where import FiniteMap import HsSyn -import Char (isSpace) - -- --------------------------------------------------------------------------- -- Describing a module interface @@ -45,11 +39,6 @@ data Interface -- restricted to only those bits exported. -- the map key is the "main name" of the decl. - iface_name_docs :: FiniteMap HsName Doc, - -- ^ maps names exported by this module to documentation. - -- Includes not just "main names" but names of constructors, - -- record fields, etc. - iface_info :: Maybe ModuleInfo, -- ^ information from the module header @@ -60,11 +49,6 @@ data Interface -- ^ module-wide doc options } -data ModuleInfo = ModuleInfo - { portability :: String, - stability :: String, - maintainer :: String } - data DocOption = OptHide | OptPrune | OptIgnoreExports deriving (Eq) @@ -72,7 +56,7 @@ type DocString = String data ExportItem = ExportDecl - HsDecl -- a declaration + HsDecl -- a declaration (with doc annotations) | ExportGroup -- a section heading Int -- section level (1, 2, 3, ... ) @@ -87,104 +71,3 @@ data ExportItem type ModuleMap = FiniteMap Module Interface --- ----------------------------------------------------------------------------- --- Doc strings and formatting - -data GenDoc id - = DocEmpty - | DocAppend (GenDoc id) (GenDoc id) - | DocString String - | DocParagraph (GenDoc id) - | DocIdentifier id - | DocModule String - | DocEmphasis (GenDoc id) - | DocMonospaced (GenDoc id) - | DocUnorderedList [GenDoc id] - | DocOrderedList [GenDoc id] - | DocCodeBlock (GenDoc id) - | DocURL String - -type Doc = GenDoc HsQName -type ParsedDoc = GenDoc String - --- | DocMarkup is a set of instructions for marking up documentation. --- In fact, it's really just a mapping from 'GenDoc' to some other --- type [a], where [a] is usually the type of the output (HTML, say). - -data DocMarkup id a = Markup { - markupEmpty :: a, - markupString :: String -> a, - markupParagraph :: a -> a, - markupAppend :: a -> a -> a, - markupIdentifier :: id -> a, - markupModule :: String -> a, - markupEmphasis :: a -> a, - markupMonospaced :: a -> a, - markupUnorderedList :: [a] -> a, - markupOrderedList :: [a] -> a, - markupCodeBlock :: a -> a, - markupURL :: String -> a - } - -markup :: DocMarkup id a -> GenDoc id -> a -markup m DocEmpty = markupEmpty m -markup m (DocAppend d1 d2) = markupAppend m (markup m d1) (markup m d2) -markup m (DocString s) = markupString m s -markup m (DocParagraph d) = markupParagraph m (markup m d) -markup m (DocIdentifier i) = markupIdentifier m i -markup m (DocModule mod) = markupModule m mod -markup m (DocEmphasis d) = markupEmphasis m (markup m d) -markup m (DocMonospaced d) = markupMonospaced m (markup m d) -markup m (DocUnorderedList ds) = markupUnorderedList m (map (markup m) ds) -markup m (DocOrderedList ds) = markupOrderedList m (map (markup m) ds) -markup m (DocCodeBlock d) = markupCodeBlock m (markup m d) -markup m (DocURL url) = markupURL m url - --- | Since marking up is just a matter of mapping 'Doc' into some --- other type, we can \'rename\' documentation by marking up 'Doc' into --- the same thing, modifying only the identifiers embedded in it. -mapIdent f = Markup { - markupEmpty = DocEmpty, - markupString = DocString, - markupParagraph = DocParagraph, - markupAppend = DocAppend, - markupIdentifier = f, - markupModule = DocModule, - markupEmphasis = DocEmphasis, - markupMonospaced = DocMonospaced, - markupUnorderedList = DocUnorderedList, - markupOrderedList = DocOrderedList, - markupCodeBlock = DocCodeBlock, - markupURL = DocURL - } - --- ----------------------------------------------------------------------------- --- ** Smart constructors - --- used to make parsing easier; we group the list items later -docAppend (DocUnorderedList ds1) (DocUnorderedList ds2) - = DocUnorderedList (ds1++ds2) -docAppend (DocUnorderedList ds1) (DocAppend (DocUnorderedList ds2) d) - = DocAppend (DocUnorderedList (ds1++ds2)) d -docAppend (DocOrderedList ds1) (DocOrderedList ds2) - = DocOrderedList (ds1++ds2) -docAppend (DocOrderedList ds1) (DocAppend (DocOrderedList ds2) d) - = DocAppend (DocOrderedList (ds1++ds2)) d -docAppend DocEmpty d = d -docAppend d DocEmpty = d -docAppend d1 d2 - = DocAppend d1 d2 - --- again to make parsing easier - we spot a paragraph whose only item --- is a DocMonospaced and make it into a DocCodeBlock -docParagraph (DocMonospaced p) - = DocCodeBlock p -docParagraph (DocAppend (DocString s1) (DocMonospaced p)) - | all isSpace s1 - = DocCodeBlock p -docParagraph (DocAppend (DocString s1) - (DocAppend (DocMonospaced p) (DocString s2))) - | all isSpace s1 && all isSpace s2 - = DocCodeBlock p -docParagraph p - = DocParagraph p |