aboutsummaryrefslogtreecommitdiff
path: root/src/Main.hs
diff options
context:
space:
mode:
authorfiddlosopher <fiddlosopher@788f1e2b-df1e-0410-8736-df70ead52e1b>2007-08-28 19:54:16 +0000
committerfiddlosopher <fiddlosopher@788f1e2b-df1e-0410-8736-df70ead52e1b>2007-08-28 19:54:16 +0000
commit365c349249c9550da51e03407594a27ce5d2143e (patch)
treecfa269c4886436819a30c66e0ec56871bfa9585a /src/Main.hs
parent8fdf8c1d4cf33972a5fef7bf8dcf75478733da8c (diff)
downloadpandoc-365c349249c9550da51e03407594a27ce5d2143e.tar.gz
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
Diffstat (limited to 'src/Main.hs')
-rw-r--r--src/Main.hs25
1 files changed, 13 insertions, 12 deletions
diff --git a/src/Main.hs b/src/Main.hs
index 4bd3982d2..16c26fd94 100644
--- a/src/Main.hs
+++ b/src/Main.hs
@@ -445,17 +445,18 @@ main = do
Just cols -> read cols
Nothing -> stateColumns defaultParserState
- let tabsToSpacesInLine _ [] = ""
- tabsToSpacesInLine _ ('\r':[]) = "" -- remove DOS line-endings
- tabsToSpacesInLine spsToNextStop (x:xs) =
- if x == '\t'
- then if preserveTabs
- then x:(tabsToSpacesInLine tabStop xs)
- else replicate spsToNextStop ' ' ++
- tabsToSpacesInLine tabStop xs
- else x:(tabsToSpacesInLine (spsToNextStop - 1) xs)
-
- let tabFilter = unlines . map (tabsToSpacesInLine tabStop) . lines
+ let tabFilter _ [] = ""
+ tabFilter _ ('\n':xs) = '\n':(tabFilter tabStop xs)
+ tabFilter _ ('\r':'\n':xs) = '\n':(tabFilter tabStop xs)
+ -- remove DOS line endings
+ tabFilter spsToNextStop ('\t':xs) =
+ if preserveTabs
+ then '\t':(tabFilter tabStop xs)
+ else replicate spsToNextStop ' ' ++ tabFilter tabStop xs
+ tabFilter 1 (x:xs) =
+ x:(tabFilter tabStop xs)
+ tabFilter spsToNextStop (x:xs) =
+ x:(tabFilter (spsToNextStop - 1) xs)
let startParserState =
defaultParserState { stateParseRaw = parseRaw,
@@ -493,7 +494,7 @@ main = do
(readSources sources) >>= (hPutStrLn output . toUTF8 .
(writer writerOptions) .
- (reader startParserState) . tabFilter .
+ (reader startParserState) . tabFilter tabStop .
fromUTF8 . (joinWithSep "\n")) >>
hClose output