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