From b99698a292a1475d1b7c3f49b2a4fccb9994ca7c Mon Sep 17 00:00:00 2001
From: Mark Lentczner <markl@glyphic.com>
Date: Tue, 27 Jul 2010 21:06:34 +0000
Subject: [PATCH] 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 53af455f9b..afb35b3c3f 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 7eb3180dee..491ab9eb3a 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 3ed36ed9c1..b1260a9c2e 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 9e45b812a3..021464764a 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 30abfdcdee..edb5e659a5 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
-- 
GitLab