From 4427333d2fe1d27c718d2ff33806707ae5b56ee8 Mon Sep 17 00:00:00 2001 From: Adam Sampson Date: Sun, 18 Mar 2007 01:56:10 +0000 Subject: [PATCH] Fix (and clean up) indentation parsing --- fco2/Indentation.hs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/fco2/Indentation.hs b/fco2/Indentation.hs index ee9bf56..f39958e 100644 --- a/fco2/Indentation.hs +++ b/fco2/Indentation.hs @@ -37,12 +37,13 @@ parseIndentation ls = concat $ intersperse "\n" $ lines rep n i = concat $ take n (repeat i) flatten' [] level = ("", [rep level (' ' : outdentMarker)]) flatten' (s:ss) level - | stripped == "" = let (suffix, rest) = flatten' ss level in ("", suffix : rest) - | newLevel > level = (rep (newLevel - level) (' ' : indentMarker), stripped : rest) - | newLevel < level = (rep (level - newLevel) (' ' : outdentMarker), stripped : rest) - | otherwise = ("", stripped : rest) + | isBlankLine = let (suffix, rest) = flatten' ss level in (suffix, "" : rest) + | newLevel > level = (rep (newLevel - level) (' ' : indentMarker), processed : rest) + | newLevel < level = (rep (level - newLevel) (' ' : outdentMarker), processed : rest) + | otherwise = ("", processed : rest) where newLevel = countIndent s stripped' = stripComment s - stripped = (if stripIndent stripped' == "" then "" else (stripped' ++ (' ' : eolMarker))) ++ suffix + isBlankLine = stripIndent stripped' == "" + processed = (if isBlankLine then "" else (stripped' ++ (' ' : eolMarker))) ++ suffix (suffix, rest) = flatten' ss newLevel