git.iko.soy/typeable/pandoc
on master help sign in
Main: Replaced tabsToSpacesInLine and tabFilter with single function

tabFilter, which operates on the whole string rather than breaking it into lines. git-svn-id: https://pandoc.googlecode.com/svn/trunk@943 788f1e2b-df1e-0410-8736-df70ead52e1b

commit365c349249c9550da51e03407594a27ce5d2143e authorfiddlosopher <fiddlosopher@788f1e2b-df1e-0410-8736-df70ead52e1b> dateTue 28 Aug 2007, 19:54 (19 years ago) parent8fdf8c1
1 file changed+13−12
src/Main.hs+13−12
src/Main.hs+13−12
@@ -445,17 +445,18 @@ main = do
445445 Just cols -> read cols
446446 Nothing -> stateColumns defaultParserState
447447
448− let tabsToSpacesInLine _ [] = ""
449− tabsToSpacesInLine _ ('\r':[]) = "" -- remove DOS line-endings
450− tabsToSpacesInLine spsToNextStop (x:xs) =
451− if x == '\t'
452− then if preserveTabs
453− then x:(tabsToSpacesInLine tabStop xs)
454− else replicate spsToNextStop ' ' ++
455− tabsToSpacesInLine tabStop xs
456− else x:(tabsToSpacesInLine (spsToNextStop - 1) xs)
457−
458− let tabFilter = unlines . map (tabsToSpacesInLine tabStop) . lines
448+ let tabFilter _ [] = ""
449+ tabFilter _ ('\n':xs) = '\n':(tabFilter tabStop xs)
450+ tabFilter _ ('\r':'\n':xs) = '\n':(tabFilter tabStop xs)
451+ -- remove DOS line endings
452+ tabFilter spsToNextStop ('\t':xs) =
453+ if preserveTabs
454+ then '\t':(tabFilter tabStop xs)
455+ else replicate spsToNextStop ' ' ++ tabFilter tabStop xs
456+ tabFilter 1 (x:xs) =
457+ x:(tabFilter tabStop xs)
458+ tabFilter spsToNextStop (x:xs) =
459+ x:(tabFilter (spsToNextStop - 1) xs)
459460
460461 let startParserState =
461462 defaultParserState { stateParseRaw = parseRaw,
@@ -493,7 +494,7 @@ main = do
493494
494495 (readSources sources) >>= (hPutStrLn output . toUTF8 .
495496 (writer writerOptions) .
496− (reader startParserState) . tabFilter .
497+ (reader startParserState) . tabFilter tabStop .
497498 fromUTF8 . (joinWithSep "\n")) >>
498499 hClose output
499500