From 7d2106e18f26a680d157ef943da2602e7199afa1 Mon Sep 17 00:00:00 2001
From: Mateusz Kowalczyk <fuuzetsu@fuuzetsu.co.uk>
Date: Wed, 29 Jan 2014 20:37:10 +0000
Subject: [PATCH] Fix @ code blocks
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

In cases where we had some horizontal space before the closing ‘@’, the
parser would not accept the block as a code block and we'd get ugly
output.
---
 src/Haddock/Parser.hs      | 1 +
 test/Haddock/ParserSpec.hs | 8 ++++++++
 2 files changed, 9 insertions(+)

diff --git a/src/Haddock/Parser.hs b/src/Haddock/Parser.hs
index 6370eecb5f..e9bed2a5b6 100644
--- a/src/Haddock/Parser.hs
+++ b/src/Haddock/Parser.hs
@@ -365,6 +365,7 @@ codeblock d =
       where
         p isNewline c
           | isNewline && c == '@' = Nothing
+          | isNewline && isSpace c = Just isNewline
           | otherwise = Just $ c == '\n'
 
 hyperlink :: Parser (Doc a)
diff --git a/test/Haddock/ParserSpec.hs b/test/Haddock/ParserSpec.hs
index 9bca745ff1..455a67f1bf 100644
--- a/test/Haddock/ParserSpec.hs
+++ b/test/Haddock/ParserSpec.hs
@@ -410,6 +410,14 @@ spec = before initStaticOpts $ do
           , "@"
           ] `shouldParseTo` DocCodeBlock "foo\n@\nbar\n"
 
+      it "accepts horizontal space before the @" $ do
+        unlines [ " @"
+                , " foo"
+                , ""
+                , " bar"
+                , " @"
+                ] `shouldParseTo` DocCodeBlock " foo\n\n bar\n "
+
       it "accepts unicode" $ do
         "@foo 灼眼のシャナ bar@" `shouldParseTo` DocCodeBlock "foo 灼眼のシャナ bar"
 
-- 
GitLab