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 --- src/Haddock/Backends/Xhtml/DocMarkup.hs | 7 +++++-- src/Haddock/Backends/Xhtml/Layout.hs | 8 ++------ src/Haddock/Backends/Xhtml/Utils.hs | 11 +++++++---- 3 files changed, 14 insertions(+), 12 deletions(-) (limited to 'src/Haddock/Backends/Xhtml') 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