Fix (and clean up) indentation parsing
This commit is contained in:
parent
4be72cbb24
commit
4427333d2f
|
@ -37,12 +37,13 @@ parseIndentation ls = concat $ intersperse "\n" $ lines
|
||||||
rep n i = concat $ take n (repeat i)
|
rep n i = concat $ take n (repeat i)
|
||||||
flatten' [] level = ("", [rep level (' ' : outdentMarker)])
|
flatten' [] level = ("", [rep level (' ' : outdentMarker)])
|
||||||
flatten' (s:ss) level
|
flatten' (s:ss) level
|
||||||
| stripped == "" = let (suffix, rest) = flatten' ss level in ("", suffix : rest)
|
| isBlankLine = let (suffix, rest) = flatten' ss level in (suffix, "" : rest)
|
||||||
| newLevel > level = (rep (newLevel - level) (' ' : indentMarker), stripped : rest)
|
| newLevel > level = (rep (newLevel - level) (' ' : indentMarker), processed : rest)
|
||||||
| newLevel < level = (rep (level - newLevel) (' ' : outdentMarker), stripped : rest)
|
| newLevel < level = (rep (level - newLevel) (' ' : outdentMarker), processed : rest)
|
||||||
| otherwise = ("", stripped : rest)
|
| otherwise = ("", processed : rest)
|
||||||
where newLevel = countIndent s
|
where newLevel = countIndent s
|
||||||
stripped' = stripComment 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
|
(suffix, rest) = flatten' ss newLevel
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user