From b99698a292a1475d1b7c3f49b2a4fccb9994ca7c Mon Sep 17 00:00:00 2001 From: Mark Lentczner Date: Tue, 27 Jul 2010 21:06:34 +0000 Subject: give a class to empty dd elements so they can be hidden --- html/Ocean.std-theme/ocean.css | 4 ++++ src/Haddock/Backends/Xhtml.hs | 2 +- src/Haddock/Backends/Xhtml/DocMarkup.hs | 7 +++++-- src/Haddock/Backends/Xhtml/Layout.hs | 8 ++------ src/Haddock/Backends/Xhtml/Utils.hs | 11 +++++++---- 5 files changed, 19 insertions(+), 13 deletions(-) diff --git a/html/Ocean.std-theme/ocean.css b/html/Ocean.std-theme/ocean.css index 53af455f..afb35b3c 100644 --- a/html/Ocean.std-theme/ocean.css +++ b/html/Ocean.std-theme/ocean.css @@ -354,6 +354,10 @@ div#style-menu-holder { margin-bottom: 0.5em; } +#interface dd.empty { + display: none; +} + #interface dd p { margin: 0; } diff --git a/src/Haddock/Backends/Xhtml.hs b/src/Haddock/Backends/Xhtml.hs index 7eb3180d..491ab9eb 100644 --- a/src/Haddock/Backends/Xhtml.hs +++ b/src/Haddock/Backends/Xhtml.hs @@ -186,7 +186,7 @@ bodyHtml doctitle iface themes pageContent = body << [ divPackageHeader << [ - sectionName << nonEmpty doctitle, + nonEmpty sectionName << doctitle, unordList (catMaybes [ srcButton maybe_source_url iface, wikiButton maybe_wiki_url (ifaceMod `fmap` iface), diff --git a/src/Haddock/Backends/Xhtml/DocMarkup.hs b/src/Haddock/Backends/Xhtml/DocMarkup.hs index 3ed36ed9..b1260a9c 100644 --- a/src/Haddock/Backends/Xhtml/DocMarkup.hs +++ b/src/Haddock/Backends/Xhtml/DocMarkup.hs @@ -90,8 +90,11 @@ rdrDocToHtml = markup fmt . cleanup where fmt = parHtmlMarkup ppRdrName isRdrTc -docElement :: (ADDATTRS a) => a -> a -docElement = (! [theclass "doc"]) +docElement :: (Html -> Html) -> Html -> Html +docElement el content_ = + if isNoHtml content_ + then el ! [theclass "doc empty"] << spaceHtml + else el ! [theclass "doc"] << content_ docSection :: Doc DocName -> Html diff --git a/src/Haddock/Backends/Xhtml/Layout.hs b/src/Haddock/Backends/Xhtml/Layout.hs index 9e45b812..02146476 100644 --- a/src/Haddock/Backends/Xhtml/Layout.hs +++ b/src/Haddock/Backends/Xhtml/Layout.hs @@ -117,11 +117,7 @@ subDlist decls = Just $ dlist << map subEntry decls +++ clearDiv subEntry (decl, mdoc, subs) = dterm ! [theclass "src"] << decl +++ - docElement ddef << (fmap docToHtml mdoc `with` subs) - - Nothing `with` [] = spaceHtml - ma `with` bs = ma +++ bs - + docElement ddef << (fmap docToHtml mdoc +++ subs) clearDiv = thediv ! [ theclass "clear" ] << noHtml @@ -132,7 +128,7 @@ subTable decls = Just $ table << aboves (concatMap subRow decls) subRow (decl, mdoc, subs) = (td ! [theclass "src"] << decl <-> - docElement td << nonEmpty (fmap docToHtml mdoc)) + docElement td << fmap docToHtml mdoc) : map (cell . (td <<)) subs diff --git a/src/Haddock/Backends/Xhtml/Utils.hs b/src/Haddock/Backends/Xhtml/Utils.hs index 30abfdcd..edb5e659 100644 --- a/src/Haddock/Backends/Xhtml/Utils.hs +++ b/src/Haddock/Backends/Xhtml/Utils.hs @@ -113,10 +113,13 @@ char :: Char -> Html char c = toHtml [c] --- | Ensure content contains at least something (a non-breaking space) -nonEmpty :: (HTML a) => a -> Html -nonEmpty a = if isNoHtml h then spaceHtml else h - where h = toHtml a +-- | Make an element that always has at least something (a non-breaking space) +-- If it would have otherwise been empty, then give it the class ".empty" +nonEmpty :: (Html -> Html) -> Html -> Html +nonEmpty el content_ = + if isNoHtml content_ + then el ! [theclass "empty"] << spaceHtml + else el << content_ quote :: Html -> Html -- cgit v1.2.3