From 64aee65f62c7184f31d6778d0d3d9b6dc96e4e91 Mon Sep 17 00:00:00 2001
From: Mateusz Kowalczyk
Date: Wed, 25 Jun 2014 15:02:48 +0200
Subject: Drop DocParagraph from front of headers
I can not remember why they were wrapped in paragraphs to begin with and
it seems unnecessary now that I test it. Closes #307.
---
CHANGES | 2 ++
haddock-library/src/Documentation/Haddock/Parser.hs | 7 ++++++-
haddock-library/test/Documentation/Haddock/ParserSpec.hs | 9 ++++-----
html-test/ref/Nesting.html | 6 ++----
4 files changed, 14 insertions(+), 10 deletions(-)
diff --git a/CHANGES b/CHANGES
index 6c139538..ee20ca1b 100644
--- a/CHANGES
+++ b/CHANGES
@@ -2,6 +2,8 @@ Changes in version 2.15.0
* Always read in prologue files as UTF8 (#286 and Cabal #1721)
+ * parser: don't wrap headers in DocParagraph (#307)
+
Changes in version 2.14.3
* Fix parsing of identifiers with ^ or ⋆ in them (#298)
diff --git a/haddock-library/src/Documentation/Haddock/Parser.hs b/haddock-library/src/Documentation/Haddock/Parser.hs
index f13cedc6..1d98601a 100644
--- a/haddock-library/src/Documentation/Haddock/Parser.hs
+++ b/haddock-library/src/Documentation/Haddock/Parser.hs
@@ -220,6 +220,11 @@ paragraph = examples <|> skipSpace *> (list <|> birdtracks <|> codeblock
-- | Headers inside the comment denoted with @=@ signs, up to 6 levels
-- deep.
+--
+-- >>> parseOnly header "= Hello"
+-- Right (DocHeader (Header {headerLevel = 1, headerTitle = DocString "Hello"}))
+-- >>> parseOnly header "== World"
+-- Right (DocHeader (Header {headerLevel = 2, headerTitle = DocString "World"}))
header :: Parser (DocH mod Identifier)
header = do
let psers = map (string . encodeUtf8 . concat . flip replicate "=") [6, 5 .. 1]
@@ -227,7 +232,7 @@ header = do
delim <- decodeUtf8 <$> pser
line <- skipHorizontalSpace *> nonEmptyLine >>= return . parseString
rest <- paragraph <|> return mempty
- return $ DocParagraph (DocHeader (Header (length delim) line)) <> rest
+ return $ DocHeader (Header (length delim) line) <> rest
textParagraph :: Parser (DocH mod Identifier)
textParagraph = docParagraph . parseString . intercalate "\n" <$> many1 nonEmptyLine
diff --git a/haddock-library/test/Documentation/Haddock/ParserSpec.hs b/haddock-library/test/Documentation/Haddock/ParserSpec.hs
index 4bcbbec7..6d05791b 100644
--- a/haddock-library/test/Documentation/Haddock/ParserSpec.hs
+++ b/haddock-library/test/Documentation/Haddock/ParserSpec.hs
@@ -808,16 +808,15 @@ spec = do
context "when parsing function documentation headers" $ do
it "can parse a simple header" $ do
"= Header 1\nHello." `shouldParseTo`
- DocParagraph (DocHeader (Header 1 "Header 1"))
+ (DocHeader (Header 1 "Header 1"))
<> DocParagraph "Hello."
it "allow consecutive headers" $ do
"= Header 1\n== Header 2" `shouldParseTo`
- DocParagraph (DocHeader (Header 1 "Header 1"))
- <> DocParagraph (DocHeader (Header 2 "Header 2"))
+ DocHeader (Header 1 "Header 1")
+ <> DocHeader (Header 2 "Header 2")
it "accepts markup in the header" $ do
"= /Header/ __1__\nFoo" `shouldParseTo`
- DocParagraph (DocHeader
- (Header 1 (DocEmphasis "Header" <> " " <> DocBold "1")))
+ DocHeader (Header 1 (DocEmphasis "Header" <> " " <> DocBold "1"))
<> DocParagraph "Foo"
diff --git a/html-test/ref/Nesting.html b/html-test/ref/Nesting.html
index 4abef7b6..1a7f2755 100644
--- a/html-test/ref/Nesting.html
+++ b/html-test/ref/Nesting.html
@@ -261,10 +261,8 @@ with more of the indented list content.No newline separation even in indented lists.
We can have any paragraph level element that we normally
- can, like headersLevel 3 header
Level 3 headerwith some content…