git.iko.soy/typeable/pandoc
on master help sign in
Revert "Avoid a pointless Text -> String conversion on output."

This reverts commit 87ce1ffbd97f6cb2785f9fbf05f68d3185f50675. This change caused a problem on Windows that we didn't have before; this needs looking into. https://ci.appveyor.com/project/jgm/pandoc/build/job/fxq96log042df8dk .\pandoc.exe -s --toc ..\MANUAL.txt -o MANUAL.html pandoc.exe: MANUAL.html: commitAndReleaseBuffer: invalid argument (invalid character) Command exited with code 1

commit6dd689ad976f0cd873411bda7b8df07c451c2227 authorJohn MacFarlane <jgm@berkeley.edu> dateThu 8 Aug 2019, 13:39 (7 years ago) parentb6490de
1 file changed+8−14
src/Text/Pandoc/App.hs+8−14
src/Text/Pandoc/App.hs+8−14
@@ -34,16 +34,15 @@ import Data.Maybe (fromMaybe, isJust, isNothing)
3434import qualified Data.Set as Set
3535import Data.Text (Text)
3636import qualified Data.Text as T
37−import qualified Data.Text.IO as TIO
3837import qualified Data.Text.Lazy as TL
38+import qualified Data.Text.Lazy.Encoding as TE
3939import 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
4141import Network.URI (URI (..), parseURI)
4242import System.Directory (doesDirectoryExist)
4343import System.Exit (exitSuccess)
4444import System.FilePath
45−import System.IO (nativeNewline, stdout, hSetNewlineMode, hSetEncoding,
46− NewlineMode(..), utf8)
45+import System.IO (nativeNewline, stdout)
4746import qualified System.IO as IO (Newline (..))
4847import Text.Pandoc
4948import Text.Pandoc.App.FormatHeuristics (formatFromFilePaths)
@@ -296,7 +295,7 @@ convertWithOpts opts = do
296295 case res of
297296 Right pdf -> writeFnBinary outputFile pdf
298297 Left err' -> throwError $ PandocPDFError $
299− TL.unpack (TLE.decodeUtf8With TE.lenientDecode err')
298+ TL.unpack (TE.decodeUtf8With TE.lenientDecode err')
300299
301300 Nothing -> do
302301 let addNl = if standalone
@@ -366,7 +365,7 @@ readSource src = case parseURI src of
366365 else BS.readFile fp
367366 E.catch (return $! UTF8.toText bs)
368367 (\e -> case e of
369− TE.DecodeError _ (Just w) -> do
368+ TSE.DecodeError _ (Just w) -> do
370369 case BS.elemIndex w bs of
371370 Just offset -> E.throwIO $
372371 PandocUTF8DecodingError fp offset w
@@ -385,11 +384,6 @@ writeFnBinary "-" = liftIO . BL.putStr
385384writeFnBinary f = liftIO . BL.writeFile (UTF8.encodePath f)
386385
387386writerFn :: MonadIO m => IO.Newline -> FilePath -> Text -> m ()
388−writerFn eol "-" t = liftIO $ do
389− hSetNewlineMode stdout (NewlineMode eol eol)
390− hSetEncoding stdout utf8
391− TIO.putStr t
392−writerFn eol f t = liftIO $ do
393− hSetNewlineMode stdout (NewlineMode eol eol)
394− hSetEncoding stdout utf8
395− TIO.writeFile f t
387+-- TODO this implementation isn't maximally efficient:
388+writerFn eol "-" = liftIO . UTF8.putStrWith eol . T.unpack
389+writerFn eol f = liftIO . UTF8.writeFileWith eol f . T.unpack