@@ -34,16 +34,15 @@ import Data.Maybe (fromMaybe, isJust, isNothing)
34import qualified Data.Set as Set
34import qualified Data.Set as Set
35import Data.Text (Text)
35import Data.Text (Text)
36import qualified Data.Text as T
36import qualified Data.Text as T
37−import qualified Data.Text.IO as TIO
38import qualified Data.Text.Lazy as TL
37import qualified Data.Text.Lazy as TL
38+import qualified Data.Text.Lazy.Encoding as TE
39import qualified Data.Text.Encoding.Error as TE
39import qualified Data.Text.Encoding.Error as TE
40−import qualified Data.Text.Lazy.Encoding as TLE
40+import qualified Data.Text.Encoding.Error as TSE
41import Network.URI (URI (..), parseURI)
41import Network.URI (URI (..), parseURI)
42import System.Directory (doesDirectoryExist)
42import System.Directory (doesDirectoryExist)
43import System.Exit (exitSuccess)
43import System.Exit (exitSuccess)
44import System.FilePath
44import System.FilePath
45−import System.IO (nativeNewline, stdout, hSetNewlineMode, hSetEncoding,
45+import System.IO (nativeNewline, stdout)
46− NewlineMode(..), utf8)
47import qualified System.IO as IO (Newline (..))
46import qualified System.IO as IO (Newline (..))
48import Text.Pandoc
47import Text.Pandoc
49import Text.Pandoc.App.FormatHeuristics (formatFromFilePaths)
48import Text.Pandoc.App.FormatHeuristics (formatFromFilePaths)
@@ -296,7 +295,7 @@ convertWithOpts opts = do
296 case res of
295 case res of
297 Right pdf -> writeFnBinary outputFile pdf
296 Right pdf -> writeFnBinary outputFile pdf
298 Left err' -> throwError $ PandocPDFError $
297 Left err' -> throwError $ PandocPDFError $
299− TL.unpack (TLE.decodeUtf8With TE.lenientDecode err')
298+ TL.unpack (TE.decodeUtf8With TE.lenientDecode err')
301 Nothing -> do
300 Nothing -> do
302 let addNl = if standalone
301 let addNl = if standalone
@@ -366,7 +365,7 @@ readSource src = case parseURI src of
366 else BS.readFile fp
365 else BS.readFile fp
367 E.catch (return $! UTF8.toText bs)
366 E.catch (return $! UTF8.toText bs)
368 (\e -> case e of
367 (\e -> case e of
369− TE.DecodeError _ (Just w) -> do
368+ TSE.DecodeError _ (Just w) -> do
370 case BS.elemIndex w bs of
369 case BS.elemIndex w bs of
371 Just offset -> E.throwIO $
370 Just offset -> E.throwIO $
372 PandocUTF8DecodingError fp offset w
371 PandocUTF8DecodingError fp offset w
@@ -385,11 +384,6 @@ writeFnBinary "-" = liftIO . BL.putStr
385writeFnBinary f = liftIO . BL.writeFile (UTF8.encodePath f)
384writeFnBinary f = liftIO . BL.writeFile (UTF8.encodePath f)
387writerFn :: MonadIO m => IO.Newline -> FilePath -> Text -> m ()
386writerFn :: MonadIO m => IO.Newline -> FilePath -> Text -> m ()
387+-- TODO this implementation isn't maximally efficient:
388−writerFn eol "-" t = liftIO $ do
388+writerFn eol "-" = liftIO . UTF8.putStrWith eol . T.unpack
389− hSetNewlineMode stdout (NewlineMode eol eol)
390− hSetEncoding stdout utf8
392−writerFn eol f t = liftIO $ do
389+writerFn eol f = liftIO . UTF8.writeFileWith eol f . T.unpack
393− hSetNewlineMode stdout (NewlineMode eol eol)
394− hSetEncoding stdout utf8