@@ -445,17 +445,18 @@ main = do
445 Just cols -> read cols
445 Just cols -> read cols
446 Nothing -> stateColumns defaultParserState
446 Nothing -> stateColumns defaultParserState
448− let tabsToSpacesInLine _ [] = ""
448+ let tabFilter _ [] = ""
449+ tabFilter _ ('\n':xs) = '\n':(tabFilter tabStop xs)
450+ tabFilter _ ('\r':'\n':xs) = '\n':(tabFilter tabStop xs)
449− tabsToSpacesInLine _ ('\r':[]) = "" -- remove DOS line-endings
451+ -- remove DOS line endings
450− tabsToSpacesInLine spsToNextStop (x:xs) =
452+ tabFilter spsToNextStop ('\t':xs) =
452− then if preserveTabs
453+ if preserveTabs
453− then x:(tabsToSpacesInLine tabStop xs)
454+ then '\t':(tabFilter tabStop xs)
454− else replicate spsToNextStop ' ' ++
455+ else replicate spsToNextStop ' ' ++ tabFilter tabStop xs
455− tabsToSpacesInLine tabStop xs
456+ tabFilter 1 (x:xs) =
456− else x:(tabsToSpacesInLine (spsToNextStop - 1) xs)
457+ x:(tabFilter tabStop xs)
457−
458+ tabFilter spsToNextStop (x:xs) =
458− let tabFilter = unlines . map (tabsToSpacesInLine tabStop) . lines
459+ x:(tabFilter (spsToNextStop - 1) xs)
460 let startParserState =
461 let startParserState =
461 defaultParserState { stateParseRaw = parseRaw,
462 defaultParserState { stateParseRaw = parseRaw,
@@ -493,7 +494,7 @@ main = do
494 (readSources sources) >>= (hPutStrLn output . toUTF8 .
495 (readSources sources) >>= (hPutStrLn output . toUTF8 .
495 (writer writerOptions) .
496 (writer writerOptions) .
496− (reader startParserState) . tabFilter .
497+ (reader startParserState) . tabFilter tabStop .
497 fromUTF8 . (joinWithSep "\n")) >>
498 fromUTF8 . (joinWithSep "\n")) >>
498 hClose output
499 hClose output