@@ -32,7 +32,7 @@ writers.
32module Main where
32module Main where
33import Text.Pandoc
33import Text.Pandoc
34import Text.Pandoc.ODT
34import Text.Pandoc.ODT
35−import Text.Pandoc.Shared ( HTMLMathMethod (..), splitBy, ObfuscationMethod (..) )
35+import Text.Pandoc.Shared ( HTMLMathMethod (..), splitBy, tabFilter, ObfuscationMethod (..) )
36import Text.Pandoc.Highlighting ( languages )
36import Text.Pandoc.Highlighting ( languages )
37import System.Environment ( getArgs, getProgName, getEnvironment )
37import System.Environment ( getArgs, getProgName, getEnvironment )
38import System.Exit ( exitWith, ExitCode (..) )
38import System.Exit ( exitWith, ExitCode (..) )
@@ -131,8 +131,7 @@ writeDoc _ = prettyPandoc
132-- | Data structure for command line options.
132-- | Data structure for command line options.
133data Opt = Opt
133data Opt = Opt
134− { optPreserveTabs :: Bool -- ^ Convert tabs to spaces
135− , optTabStop :: Int -- ^ Number of spaces per tab
134+ { optTabStop :: Int -- ^ Number of spaces per tab
136 , optStandalone :: Bool -- ^ Include header, footer
135 , optStandalone :: Bool -- ^ Include header, footer
137 , optReader :: String -- ^ Reader format
136 , optReader :: String -- ^ Reader format
138 , optWriter :: String -- ^ Writer format
137 , optWriter :: String -- ^ Writer format
@@ -167,8 +166,7 @@ data Opt = Opt
167-- | Defaults for command-line options.
166-- | Defaults for command-line options.
168defaultOpts :: Opt
167defaultOpts :: Opt
169defaultOpts = Opt
168defaultOpts = Opt
170− { optPreserveTabs = False
171− , optTabStop = 4
169+ { optTabStop = 4
172 , optStandalone = False
170 , optStandalone = False
173 , optReader = "" -- null for default reader
171 , optReader = "" -- null for default reader
174 , optWriter = "" -- null for default writer
172 , optWriter = "" -- null for default writer
@@ -229,7 +227,7 @@ options =
230 , Option "p" ["preserve-tabs"]
228 , Option "p" ["preserve-tabs"]
232− (\opt -> return opt { optPreserveTabs = True }))
230+ (\opt -> return opt { optTabStop = 0 }))
233 "" -- "Preserve tabs instead of converting to spaces"
231 "" -- "Preserve tabs instead of converting to spaces"
235 , Option "" ["tab-stop"]
233 , Option "" ["tab-stop"]
@@ -519,8 +517,7 @@ main = do
519 -- thread option data structure through all supplied option actions
517 -- thread option data structure through all supplied option actions
520 opts <- foldl (>>=) (return defaultOpts') actions
518 opts <- foldl (>>=) (return defaultOpts') actions
522− let Opt { optPreserveTabs = preserveTabs
523− , optTabStop = tabStop
520+ let Opt { optTabStop = tabStop
524 , optStandalone = standalone
521 , optStandalone = standalone
525 , optReader = readerName
522 , optReader = readerName
526 , optWriter = writerName
523 , optWriter = writerName
@@ -581,20 +578,6 @@ main = do
581 Just cols -> read cols
578 Just cols -> read cols
582 Nothing -> stateColumns defaultParserState
579 Nothing -> stateColumns defaultParserState
584− let tabFilter _ [] = ""
585− tabFilter _ ('\n':xs) = '\n' : tabFilter tabStop xs
586− -- remove DOS line endings
587− tabFilter _ ('\r':'\n':xs) = '\n' : tabFilter tabStop xs
588− tabFilter _ ('\r':xs) = '\n' : tabFilter tabStop xs
589− tabFilter spsToNextStop ('\t':xs) =
591− then '\t' : tabFilter tabStop xs
592− else replicate spsToNextStop ' ' ++ tabFilter tabStop xs
593− tabFilter 1 (x:xs) =
594− x : tabFilter tabStop xs
595− tabFilter spsToNextStop (x:xs) =
596− x : tabFilter (spsToNextStop - 1) xs
598 let standalone' = (standalone && not strict) || isNonTextOutput writerName'
581 let standalone' = (standalone && not strict) || isNonTextOutput writerName'
600#ifdef _CITEPROC
583#ifdef _CITEPROC