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 headers

Level 3 header

Level 3 header

with some content…