diff options
| author | Alec Theriault <alec.theriault@gmail.com> | 2020-03-28 14:12:48 -0400 | 
|---|---|---|
| committer | Alec Theriault <alec.theriault@gmail.com> | 2020-03-28 14:26:27 -0400 | 
| commit | 5dc3866928759fcaf6b31d1598051781389a01d4 (patch) | |
| tree | 4c7745419ef14f384a2688d96f960721f48652f1 | |
| parent | d8bedeb98a84db0d51c49d41c632d9d4846d1bbe (diff) | |
Disallow links in section headers
This is quite straightforward to implement, since we already had a
function `docToHtmlNoAnchors` (which we used to generate the link in the
sidebar "Contents").
This breaks test `Bug387`, but that test case has aged badly: we now
automatically generate anchors for all headings, so manually adding an
anchor in a section makes no sense. Nested anchors are, as pointed out
in #1054, disallowed by the HTML standard.
Fixes #1054
| -rw-r--r-- | haddock-api/src/Haddock/Backends/Xhtml.hs | 2 | ||||
| -rw-r--r-- | html-test/ref/Bug1054.html (renamed from html-test/ref/Bug387.html) | 54 | ||||
| -rw-r--r-- | html-test/src/Bug1054.hs | 5 | ||||
| -rw-r--r-- | html-test/src/Bug387.hs | 12 | 
4 files changed, 19 insertions, 54 deletions
diff --git a/haddock-api/src/Haddock/Backends/Xhtml.hs b/haddock-api/src/Haddock/Backends/Xhtml.hs index d30312b7..e3d4e8ca 100644 --- a/haddock-api/src/Haddock/Backends/Xhtml.hs +++ b/haddock-api/src/Haddock/Backends/Xhtml.hs @@ -681,7 +681,7 @@ processExport :: Bool -> LinksInfo -> Bool -> Maybe Package -> Qualification                -> ExportItem DocNameI -> Maybe Html  processExport _ _ _ _ _ ExportDecl { expItemDecl = L _ (InstD {}) } = Nothing -- Hide empty instances  processExport summary _ _ pkg qual (ExportGroup lev id0 doc) -  = nothingIf summary $ groupHeading lev id0 << docToHtml (Just id0) pkg qual (mkMeta doc) +  = nothingIf summary $ groupHeading lev id0 << docToHtmlNoAnchors (Just id0) pkg qual (mkMeta doc)  processExport summary links unicode pkg qual (ExportDecl decl pats doc subdocs insts fixities splice)    = processDecl summary $ ppDecl summary links decl pats doc insts fixities subdocs splice unicode pkg qual  processExport summary _ _ _ qual (ExportNoDecl y []) diff --git a/html-test/ref/Bug387.html b/html-test/ref/Bug1054.html index 12887a83..df3fae0a 100644 --- a/html-test/ref/Bug387.html +++ b/html-test/ref/Bug1054.html @@ -3,7 +3,7 @@    ><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"       /><meta name="viewport" content="width=device-width, initial-scale=1"       /><title -    >Bug387</title +    >Bug1054</title      ><link href="#" rel="stylesheet" type="text/css" title="Linuwial"       /><link rel="stylesheet" type="text/css" href="#"       /><link rel="stylesheet" type="text/css" href="#" @@ -40,7 +40,7 @@  	    ></tr  	  ></table  	><p class="caption" -	>Bug387</p +	>Bug1054</p  	></div        ><div id="table-of-contents"        ><div id="contents-list" @@ -49,11 +49,9 @@  	  ><ul  	  ><li  	    ><a href="#" -	      >Section1</a -	      ></li -	    ><li -	    ><a href="#" -	      >Section2</a +	      >Header with <code +		>foo</code +		> link</a  	      ></li  	    ></ul  	  ></div @@ -65,49 +63,23 @@  	  ><ul class="details-toggle" data-details-id="syn"  	  ><li class="src short"  	    ><a href="#" -	      >test1</a -	      > :: <a href="#" title="Data.Int" -	      >Int</a -	      ></li -	    ><li class="src short" -	    ><a href="#" -	      >test2</a -	      > :: <a href="#" title="Data.Int" -	      >Int</a -	      ></li +	      >foo</a +	      > :: ()</li  	    ></ul  	  ></details  	></div        ><div id="interface"        ><a href="#" id="g:1"  	><h1 -	  >Section1<a id="a:section1" -	    ></a -	    ></h1 -	  ></a -	><div class="top" -	><p class="src" -	  ><a id="v:test1" class="def" -	    >test1</a -	    > :: <a href="#" title="Data.Int" -	    >Int</a -	    > <a href="#" class="selflink" -	    >#</a -	    ></p -	  ></div -	><a href="#" id="g:2" -	><h1 -	  >Section2<a id="a:section2" -	    ></a -	    ></h1 +	  >Header with <code +	    >foo</code +	    > link</h1  	  ></a  	><div class="top"  	><p class="src" -	  ><a id="v:test2" class="def" -	    >test2</a -	    > :: <a href="#" title="Data.Int" -	    >Int</a -	    > <a href="#" class="selflink" +	  ><a id="v:foo" class="def" +	    >foo</a +	    > :: () <a href="#" class="selflink"  	    >#</a  	    ></p  	  ></div diff --git a/html-test/src/Bug1054.hs b/html-test/src/Bug1054.hs new file mode 100644 index 00000000..c699f1fb --- /dev/null +++ b/html-test/src/Bug1054.hs @@ -0,0 +1,5 @@ +module Bug1054 where + +-- * Header with 'foo' link + +foo = () diff --git a/html-test/src/Bug387.hs b/html-test/src/Bug387.hs deleted file mode 100644 index d9fed34e..00000000 --- a/html-test/src/Bug387.hs +++ /dev/null @@ -1,12 +0,0 @@ -module Bug387 -  ( -- * Section1#a:section1# -    test1 -    -- * Section2#a:section2# -  , test2 -  ) where - -test1 :: Int -test1 = 223 - -test2 :: Int -test2 = 42  | 
