diff options
Diffstat (limited to 'src/HaddockHtml.hs')
| -rw-r--r-- | src/HaddockHtml.hs | 61 | 
1 files changed, 44 insertions, 17 deletions
diff --git a/src/HaddockHtml.hs b/src/HaddockHtml.hs index 7b909a02..527fe758 100644 --- a/src/HaddockHtml.hs +++ b/src/HaddockHtml.hs @@ -39,8 +39,9 @@ foo = 42  -- -----------------------------------------------------------------------------  -- Files we need to copy from our $libdir -cssFile, iconFile :: String +cssFile, jsFile, iconFile :: String  cssFile  = "haddock.css" +jsFile   = "haddock.js"  iconFile = "haskell_icon.gif"  -- ----------------------------------------------------------------------------- @@ -88,13 +89,13 @@ copyHtmlBits odir libdir maybe_css = do  			Just f  -> f  	css_destination = odir ++ pathSeparator:cssFile -	icon_file        = libdir ++ pathSeparator:iconFile -	icon_destination = odir   ++ pathSeparator:iconFile +	copyFile f = do +	   s <- readFile (libdir ++ pathSeparator:f) +	   writeFile (odir ++ pathSeparator:f) s    css_contents <- readFile css_file    writeFile css_destination css_contents -  icon_contents <- readFile icon_file -  writeFile icon_destination icon_contents +  mapM_ copyFile [ iconFile, jsFile ]  contentsHtmlFile, indexHtmlFile :: String @@ -369,7 +370,8 @@ ppHtmlModule odir doctitle source_url    let html =   	header (thetitle (toHtml mdl) +++  		thelink ! [href cssFile, -		  rel "stylesheet", thetype "text/css"]) +++ +		  rel "stylesheet", thetype "text/css"] +++ +		(script ! [src jsFile] $ noHtml)) +++          body << vanillaTable << (  	    pageHeader mdl iface doctitle source_url   		maybe_contents_url maybe_index_url </> s15 </> @@ -579,13 +581,18 @@ ppHsDataDecl summary instances is_newty  			 aboves (map ppSideBySideConstr cons)  			) +	inst_id = "i:" ++ hsNameStr nm +  	instances_bit  	   | null instances = Html.emptyTable  	   | otherwise -	   =  inst_hdr </> -		 tda [theclass "body"] << spacedTable1 << ( -			aboves (map (declBox.ppInstHead) instances) -		  ) +	   =  inst_hdr inst_id </> +		 tda [theclass "body"] <<  +		    collapsed inst_id ( +			spacedTable1 << ( +			   aboves (map (declBox.ppInstHead) instances) +		        ) + 		   )  ppHsDataDecl _ _ _ _ d =      error $ "HaddockHtml.ppHsDataDecl: unexpected decl " ++ show d @@ -753,11 +760,16 @@ ppHsClassDecl summary instances orig_c  			             ]  			) +	inst_id = "i:" ++ hsNameStr nm  	instances_bit -	   =  s8 </> inst_hdr </> -		 tda [theclass "body"] << spacedTable1 << ( +	   | null instances = Html.emptyTable +	   | otherwise  +	   =  s8 </> inst_hdr inst_id </> +		 tda [theclass "body"] <<  +		   collapsed inst_id ( +		      spacedTable1 << (  			aboves (map (declBox.ppInstHead) instances) -		  ) +		   ))  ppHsClassDecl _ _ _ d =      error $ "HaddockHtml.ppHsClassDecl: unexpected decl: " ++ show d @@ -1074,10 +1086,13 @@ spacedTable1, spacedTable5 :: Html -> Html  spacedTable1 = table ! [theclass "vanilla",  cellspacing 1, cellpadding 0]  spacedTable5 = table ! [theclass "vanilla",  cellspacing 5, cellpadding 0] -constr_hdr, meth_hdr, inst_hdr :: HtmlTable -constr_hdr = tda [ theclass "section4" ] << toHtml "Constructors" -meth_hdr   = tda [ theclass "section4" ] << toHtml "Methods" -inst_hdr   = tda [ theclass "section4" ] << toHtml "Instances" +constr_hdr, meth_hdr :: HtmlTable +constr_hdr  = tda [ theclass "section4" ] << toHtml "Constructors" +meth_hdr    = tda [ theclass "section4" ] << toHtml "Methods" + +inst_hdr :: String -> HtmlTable +inst_hdr id =  +  tda [ theclass "section4" ] << (collapsebutton id +++ toHtml " Instances")  dcolon, arrow, darrow :: Html  dcolon = toHtml "::" @@ -1098,3 +1113,15 @@ linkedAnchor ref frag = anchor ! [href hr]  escapeStr :: String -> String  escapeStr = flip escapeString unreserved + +-- +-- A section of HTML which is collapsible via a +/- button. +-- +collapsebutton :: String -> Html +collapsebutton id =  +  button ! [ theclass "coll", onclick ("toggle(this,'" ++ id ++ "')") ] <<  +    toHtml "+" + +collapsed :: String -> Html -> Html +collapsed id html = +  thediv ! [identifier id, thestyle "display:none;"] << html  | 
