diff options
| -rw-r--r-- | haddock-ghc.cabal | 103 | ||||
| -rw-r--r-- | haddock.cabal | 102 | ||||
| -rw-r--r-- | src/Haddock/Utils.hs | 41 | 
3 files changed, 172 insertions, 74 deletions
| diff --git a/haddock-ghc.cabal b/haddock-ghc.cabal new file mode 100644 index 00000000..5e907b6f --- /dev/null +++ b/haddock-ghc.cabal @@ -0,0 +1,103 @@ +build-type:           Simple +name:                 haddock +version:              2.0 +license:              BSD3 +license-file:         LICENSE +copyright:            (c) Simon Marlow, David Waern +author:               Simon Marlow, David Waern +maintainer:           David Waern <davve@dtek.chalmers.se> +stability:            stable +homepage:             http://www.haskell.org/haddock/ +synopsis:             Haddock is a documentation-generation tool for Haskell +                      libraries +build-depends: +  base, +  haskell98, +  mtl, +  ghc>=6.8, +  Cabal, +  filepath, +  network, +  process, +  directory, +  pretty, +  containers, +  array +extensions:           CPP, PatternGuards +ghc-options:          -fglasgow-exts +hs-source-dirs:       src +exposed-modules:      Distribution.Haddock +other-modules: +  Haddock.Types +  Haddock.InterfaceFile +  Haddock.Exception +data-files: +  html/haddock-DEBUG.css +  html/haddock.css +  html/haddock.js +  html/haskell_icon.gif +  html/minus.gif +	html/plus.gif +extra-source-files: +	CHANGES +	README +	TODO +	doc/Makefile +	doc/README +	doc/aclocal.m4 +	doc/config.mk.in +	doc/configure.ac +	doc/docbook-xml.mk +	doc/fptools.css +	doc/haddock.xml +	examples/A.hs +	examples/B.hs +	examples/Bug1.hs +	examples/Bug2.hs +	examples/Bug3.hs +	examples/Bug4.hs +	examples/Bug6.hs +	examples/Bug7.hs +	examples/Bug8.hs +	examples/Bug9.hs +	examples/Hash.hs +	examples/Hidden.hs +	examples/Makefile +	examples/NoLayout.hs +	examples/Test.hs +	examples/Visible.hs +	examples/hide-bug/A.hs +	examples/hide-bug/B.hs +	examples/hide-bug/C.hs +	examples/hide-bug/D.hs +	haddock.spec +	haskell.vim +	src/haddock.sh + +executable:           haddock +hs-source-dirs:       src +main-is:              Main.hs +extensions:           CPP, PatternGuards +ghc-options:          -fglasgow-exts -funbox-strict-fields -O2 -fasm +other-modules: +  Haddock.Interface.Rename +  Haddock.Interface.Create +  Haddock.Interface.AttachInstances +  Haddock.Utils.FastMutInt2 +  Haddock.Utils.BlockTable +  Haddock.Utils.Html +  Haddock.Utils +  Haddock.Backends.HaddockDB +  Haddock.Backends.DevHelp +  Haddock.Backends.HH +  Haddock.Backends.HH2 +  Haddock.Backends.Hoogle +  Haddock.ModuleTree +  Haddock.Types +  Haddock.Version +  Haddock.InterfaceFile         +  Haddock.Exception +  Haddock.Options +  Haddock.GHC.Typecheck +  Haddock.GHC.Utils +  Haddock.GHC diff --git a/haddock.cabal b/haddock.cabal index 5e907b6f..c4202436 100644 --- a/haddock.cabal +++ b/haddock.cabal @@ -1,42 +1,21 @@ -build-type:           Simple -name:                 haddock -version:              2.0 -license:              BSD3 -license-file:         LICENSE -copyright:            (c) Simon Marlow, David Waern -author:               Simon Marlow, David Waern -maintainer:           David Waern <davve@dtek.chalmers.se> -stability:            stable -homepage:             http://www.haskell.org/haddock/ -synopsis:             Haddock is a documentation-generation tool for Haskell -                      libraries -build-depends: -  base, -  haskell98, -  mtl, -  ghc>=6.8, -  Cabal, -  filepath, -  network, -  process, -  directory, -  pretty, -  containers, -  array -extensions:           CPP, PatternGuards -ghc-options:          -fglasgow-exts -hs-source-dirs:       src -exposed-modules:      Distribution.Haddock -other-modules: -  Haddock.Types -  Haddock.InterfaceFile -  Haddock.Exception +name: haddock +cabal-version: >=1.1.4 +version: 2.0 +license: BSD3 +license-file: LICENSE +copyright: (c) Simon Marlow +author: Simon Marlow +maintainer: Simon Marlow <simonmar@microsoft.com> +stability: stable +homepage: http://www.haskell.org/haddock/ +synopsis: Haddock is a documentation-generation tool for Haskell libraries +build-depends: base>=1.0, haskell98>=1.0, mtl>=1.0, network>=1.0  data-files: -  html/haddock-DEBUG.css -  html/haddock.css -  html/haddock.js -  html/haskell_icon.gif -  html/minus.gif +	html/haddock-DEBUG.css +	html/haddock.css +	html/haddock.js +	html/haskell_icon.gif +	html/minus.gif  	html/plus.gif  extra-source-files:  	CHANGES @@ -74,30 +53,25 @@ extra-source-files:  	haskell.vim  	src/haddock.sh -executable:           haddock -hs-source-dirs:       src -main-is:              Main.hs -extensions:           CPP, PatternGuards -ghc-options:          -fglasgow-exts -funbox-strict-fields -O2 -fasm +executable: haddock-ghc +hs-source-dirs: src +main-is: Main.hs +extensions: CPP, PatternGuards  other-modules: -  Haddock.Interface.Rename -  Haddock.Interface.Create -  Haddock.Interface.AttachInstances -  Haddock.Utils.FastMutInt2 -  Haddock.Utils.BlockTable -  Haddock.Utils.Html -  Haddock.Utils -  Haddock.Backends.HaddockDB -  Haddock.Backends.DevHelp -  Haddock.Backends.HH -  Haddock.Backends.HH2 -  Haddock.Backends.Hoogle -  Haddock.ModuleTree -  Haddock.Types -  Haddock.Version -  Haddock.InterfaceFile         -  Haddock.Exception -  Haddock.Options -  Haddock.GHC.Typecheck -  Haddock.GHC.Utils -  Haddock.GHC +	FastMutInt2 +	BlockTable +	HaddockDB +	HaddockDevHelp +	HaddockHH +	HaddockHH2 +	HaddockHoogle +	HaddockHtml +	HaddockModuleTree +	HaddockRename +	HaddockTypes +	HaddockUtil +	HaddockVersion +	Html +	GHCUtils +	Main +  diff --git a/src/Haddock/Utils.hs b/src/Haddock/Utils.hs index 6f2c32fc..81834cd8 100644 --- a/src/Haddock/Utils.hs +++ b/src/Haddock/Utils.hs @@ -46,14 +46,10 @@ import Module  import PackageConfig ( stringToPackageId )  import Control.Monad ( liftM, MonadPlus(..) ) -import Data.Map ( Map ) -import qualified Data.Map as Map hiding ( Map ) -import Data.Char +import Data.Char ( isAlpha, isSpace, toUpper, ord )  import Data.IORef ( IORef, newIORef, readIORef )  import Data.List ( intersect, isSuffixOf, intersperse ) -import Data.Maybe ( maybeToList, fromMaybe, isJust, fromJust ) -import Data.Word ( Word8 ) -import Data.Bits ( testBit ) +import Data.Maybe ( maybeToList, fromMaybe )  import Network.URI  import System.Environment ( getProgName )  import System.Exit ( exitWith, ExitCode(..) ) @@ -233,11 +229,36 @@ mapMaybeM _ Nothing = return Nothing  mapMaybeM f (Just a) = f a >>= return . Just  escapeStr :: String -> String -#if __GLASGOW_HASKELL__ < 603 -escapeStr = flip escapeString unreserved -#else  escapeStr = escapeURIString isUnreserved -#endif + +-- Following few functions are copy'n'pasted from Network.URI module +-- to avoid depending on the network lib, since doing so gives a +-- circular build dependency between haddock and network +-- (at least if you want to build network with haddock docs) + +escapeURIChar :: (Char -> Bool) -> Char -> String +escapeURIChar p c +    | p c       = [c] +    | otherwise = '%' : myShowHex (ord c) "" +    where +        myShowHex :: Int -> ShowS +        myShowHex n r =  case showIntAtBase 16 (toChrHex) n r of +            []  -> "00" +            [c] -> ['0',c] +            cs  -> cs +        toChrHex d +            | d < 10    = chr (ord '0' + fromIntegral d) +            | otherwise = chr (ord 'A' + fromIntegral (d - 10)) + +escapeURIString :: (Char -> Bool) -> String -> String +escapeURIString p s = concatMap (escapeURIChar p) s + +isUnreserved :: Char -> Bool +isUnreserved c = isAlphaNumChar c || (c `elem` "-_.~") + +isAlphaChar c    = (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') +isDigitChar c    = (c >= '0' && c <= '9') +isAlphaNumChar c = isAlphaChar c || isDigitChar c  ----------------------------------------------------------------------------- | 
