]> git.wincent.com - docvim.git/commitdiff
Make linter happier about duplication
authorGreg Hurrell <greg@hurrell.net>
Fri, 10 Jun 2016 06:40:03 +0000 (23:40 -0700)
committerGreg Hurrell <greg@hurrell.net>
Fri, 10 Jun 2016 06:40:03 +0000 (23:40 -0700)
Still not entirely happy.

lib/Text/Docvim/Parse.hs

index 5509f5abaa4c4a3806738b39db1a799cdff88265..ae1e493d0a8044eb885c2a41fa01ffcaa47311fa 100644 (file)
@@ -137,17 +137,7 @@ blockquote =   lookAhead (char '>')
            <$> paragraph' `sepBy1` blankLine
   where
     paragraph' = Paragraph <$> body
-    body = do
-      first  <- firstLine
-      rest   <- many otherLine
-      -- Make every line end with whitespace.
-      let nodes = concatMap appendWhitespace (first:rest)
-      -- Collapse consecutive whitespace.
-      let compressed = compress nodes
-      -- Trim final whitespace.
-      return ( if last compressed == Whitespace
-               then init compressed
-               else compressed )
+    body = paragraphBody firstLine otherLine
     firstLine =  char '>'
               >> optional ws
               >> many1 (choice [phrasing, whitespace])
@@ -267,17 +257,7 @@ docBlock = lookAhead docBlockStart
 paragraph :: Parser Node
 paragraph = Paragraph <$> body
   where
-    body = do
-      first <- firstLine
-      rest <- many otherLine
-      -- Make every line end with whitespace
-      let nodes = concatMap appendWhitespace (first:rest)
-      -- Collapse consecutive whitespace
-      let compressed = compress nodes
-      -- Trim final whitespace
-      return ( if last compressed == Whitespace
-               then init compressed
-               else compressed )
+    body = paragraphBody firstLine otherLine
     firstLine = many1 $ choice [phrasing, whitespace]
     otherLine =  try $ newline
               >> (commentStart <|> docBlockStart)
@@ -285,6 +265,19 @@ paragraph = Paragraph <$> body
               >> notFollowedBy special
               >> firstLine
 
+paragraphBody :: Parser [Node] -> Parser [Node] -> Parser [Node]
+paragraphBody firstLine otherLine = do
+    first  <- firstLine
+    rest   <- many otherLine
+    -- Make every line end with whitespace.
+    let nodes = concatMap appendWhitespace (first:rest)
+    -- Collapse consecutive whitespace.
+    let compressed = compress nodes
+    -- Trim final whitespace.
+    return ( if last compressed == Whitespace
+             then init compressed
+             else compressed )
+
 -- | Used in lookahead rules to make sure that we don't greedily consume special
 -- tokens as if they were just phrasing content.
 special :: Parser String