summaryrefslogtreecommitdiff
path: root/Pancake.hs
diff options
context:
space:
mode:
authordefanor <defanor@uberspace.net>2017-11-04 05:18:35 +0300
committerdefanor <defanor@uberspace.net>2017-11-04 05:26:16 +0300
commit6f8b714cf91a26acc63ec337dbabd3179254cc6d (patch)
tree795b573f818e8423c4f4d64a1f6d27421dbb4d39 /Pancake.hs
parentce9aadf397c1d0e0171c27ab2607f3f441bfa784 (diff)
Report utf-8 decoding failures, fall back to latin1
Diffstat (limited to 'Pancake.hs')
-rw-r--r--Pancake.hs15
1 files changed, 8 insertions, 7 deletions
diff --git a/Pancake.hs b/Pancake.hs
index 770b862..b479b49 100644
--- a/Pancake.hs
+++ b/Pancake.hs
@@ -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"