From dfc006ad2b8f5cb27570ac02c77aa63c5c027cd9 Mon Sep 17 00:00:00 2001 From: Simon Hengel Date: Sat, 22 Feb 2014 21:55:35 +0100 Subject: Turn a source code comment into specs --- src/Haddock/Parser.hs | 2 -- test/Haddock/ParserSpec.hs | 17 ++++++++++------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/Haddock/Parser.hs b/src/Haddock/Parser.hs index a6ad817c..095f385e 100644 --- a/src/Haddock/Parser.hs +++ b/src/Haddock/Parser.hs @@ -306,8 +306,6 @@ birdtracks = DocCodeBlock . DocString . intercalate "\n" . stripSpace <$> many1 where line = skipHorizontalSpace *> ">" *> takeLine --- | Strip leading spaces, but ignore blank lines. If any of the lines don't --- start with a ' ', however, we don't touch the block. stripSpace :: [String] -> [String] stripSpace = fromMaybe <*> mapM strip where diff --git a/test/Haddock/ParserSpec.hs b/test/Haddock/ParserSpec.hs index ac57b644..db843ccf 100644 --- a/test/Haddock/ParserSpec.hs +++ b/test/Haddock/ParserSpec.hs @@ -360,23 +360,26 @@ spec = before initStaticOpts $ do ] `shouldParseTo` DocCodeBlock "foo\nbar\nbaz" - it "ignores single leading spaces" $ do + it "strips one leading space from each line of the block" $ do unlines [ "> foo" - , "> bar" + , "> bar" , "> baz" - ] `shouldParseTo` DocCodeBlock "foo\nbar\nbaz" + ] `shouldParseTo` DocCodeBlock "foo\n bar\nbaz" + it "ignores empty lines when stripping spaces" $ do unlines [ "> foo" , ">" , "> bar" ] `shouldParseTo` DocCodeBlock "foo\n\nbar" - unlines [ - ">foo" - , "> bar" - ] `shouldParseTo` DocCodeBlock "foo\n bar" + context "when any non-empty line does not start with a space" $ do + it "does not strip any spaces" $ do + unlines [ + ">foo" + , "> bar" + ] `shouldParseTo` DocCodeBlock "foo\n bar" it "ignores nested markup" $ do unlines [ -- cgit v1.2.3