diff options
author | defanor <defanor@uberspace.net> | 2017-11-04 05:18:35 +0300 |
---|---|---|
committer | defanor <defanor@uberspace.net> | 2017-11-04 05:26:16 +0300 |
commit | 6f8b714cf91a26acc63ec337dbabd3179254cc6d (patch) | |
tree | 795b573f818e8423c4f4d64a1f6d27421dbb4d39 /Pancake.hs | |
parent | ce9aadf397c1d0e0171c27ab2607f3f441bfa784 (diff) |
Report utf-8 decoding failures, fall back to latin1
Diffstat (limited to 'Pancake.hs')
-rw-r--r-- | Pancake.hs | 15 |
1 files changed, 8 insertions, 7 deletions
@@ -41,8 +41,7 @@ import Text.Pandoc.Readers.Gopher import Control.Applicative import qualified System.IO as SIO import Data.Char -import qualified Data.Text as T -import Data.Text.Encoding (decodeUtf8') +import Data.Text.Encoding (decodeUtf8', decodeLatin1) import System.IO.Error @@ -132,11 +131,13 @@ readDoc cmd uri = do (_, ext) -> byExtension ext cols = maybe 80 id $ getCapability term termColumns opts = def { P.readerColumns = cols } - P.runIO $ case reader of - (P.TextReader f, _) -> f opts $ case decodeUtf8' out of - Left _ -> T.empty - Right r -> r - (P.ByteStringReader f, _) -> f opts $ BL.fromStrict out + case reader of + (P.TextReader f, _) -> case decodeUtf8' out of + Left err -> do + putErrLn $ show err + P.runIO $ f opts $ decodeLatin1 out + Right r -> P.runIO $ f opts r + (P.ByteStringReader f, _) -> P.runIO $ f opts $ BL.fromStrict out where http ext = byExtension ext <|> html html = P.getReader "html" |