From 06f4432a355676dd6ee43acd170f16b929dda61b Mon Sep 17 00:00:00 2001
From: Ross Paterson <ross@soi.city.ac.uk>
Date: Mon, 20 Nov 2006 09:25:26 +0000
Subject: [PATCH] trim trailing spaces (including CRs) from all input lines

---
 Distribution/ParseUtils.hs | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/Distribution/ParseUtils.hs b/Distribution/ParseUtils.hs
index f62e7f749d..e53097d39d 100644
--- a/Distribution/ParseUtils.hs
+++ b/Distribution/ParseUtils.hs
@@ -166,23 +166,23 @@ type Stanza = [(LineNo,String,String)]
 -- |Split a string into blank line-separated stanzas of
 -- "Field: value" groups
 splitStanzas :: String -> ParseResult [Stanza]
-splitStanzas = mapM mkStanza . map merge . groupStanzas . filter validLine . zip [1..] . lines
+splitStanzas = mapM mkStanza . map merge . groupStanzas . filter validLine . zip [1..] . map trimTrailingSpaces . lines
   where validLine (_,s) = case dropWhile isSpace s of
                             '-':'-':_ -> False      -- Comment
                             _         -> True
         groupStanzas :: [(Int,String)] -> [[(Int,String)]]
         groupStanzas [] = []
-        groupStanzas xs = let (ys,zs) = break allSpaces xs
-                           in ys : groupStanzas (dropWhile allSpaces zs)
+        groupStanzas xs = let (ys,zs) = break (null . snd) xs
+                           in ys : groupStanzas (dropWhile (null . snd) zs)
 
-allSpaces :: (a, String) -> Bool
-allSpaces (_,xs) = all isSpace xs
+trimTrailingSpaces :: String -> String
+trimTrailingSpaces = reverse . dropWhile isSpace . reverse
 
 -- |Split a file into "Field: value" groups, but blank lines have no
 -- significance, unlike 'splitStanzas'.  A field value may span over blank
 -- lines.
 singleStanza :: String -> ParseResult Stanza
-singleStanza = mkStanza . merge . filter validLine . zip [1..] . lines
+singleStanza = mkStanza . merge . filter validLine . zip [1..] . map trimTrailingSpaces . lines
   where validLine (_,s) = case dropWhile isSpace s of
                             '-':'-':_ -> False      -- Comment
                             []        -> False      -- blank line
-- 
GitLab