git.iko.soy/typeable/pandoc
on master help sign in
Main: Replaced tabsToSpacesInLine and tabFilter with single function
365c349fiddlosopher
src/Main.hs+13−12
@@ -445,17 +445,18 @@ main = do
445 Just cols -> read cols
445 Just cols -> read cols
446 Nothing -> stateColumns defaultParserState
446 Nothing -> stateColumns defaultParserState
447
447
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) =
451− if x == '\t'
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)
459
460
460 let startParserState =
461 let startParserState =
461 defaultParserState { stateParseRaw = parseRaw,
462 defaultParserState { stateParseRaw = parseRaw,
@@ -493,7 +494,7 @@ main = do
493
494
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
499
500