aboutsummaryrefslogtreecommitdiff
path: root/src/Text/Pandoc/Readers/Docx.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Text/Pandoc/Readers/Docx.hs')
-rw-r--r--src/Text/Pandoc/Readers/Docx.hs20
1 files changed, 12 insertions, 8 deletions
diff --git a/src/Text/Pandoc/Readers/Docx.hs b/src/Text/Pandoc/Readers/Docx.hs
index ac35fa91e..599083949 100644
--- a/src/Text/Pandoc/Readers/Docx.hs
+++ b/src/Text/Pandoc/Readers/Docx.hs
@@ -91,14 +91,18 @@ readDocx :: PandocMonad m
=> ReaderOptions
-> B.ByteString
-> m Pandoc
-readDocx opts bytes
- | Right archive <- toArchiveOrFail bytes
- , Right (docx, parserWarnings) <- archiveToDocxWithWarnings archive = do
- mapM_ (P.report . DocxParserWarning) parserWarnings
- (meta, blks) <- docxToOutput opts docx
- return $ Pandoc meta blks
-readDocx _ _ =
- throwError $ PandocSomeError "couldn't parse docx file"
+readDocx opts bytes = do
+ case toArchiveOrFail bytes of
+ Right archive -> do
+ case archiveToDocxWithWarnings archive of
+ Right (docx, parserWarnings) -> do
+ mapM_ (P.report . DocxParserWarning) parserWarnings
+ (meta, blks) <- docxToOutput opts docx
+ return $ Pandoc meta blks
+ Left docxerr -> throwError $ PandocSomeError $
+ "couldn't parse docx file: " <> T.pack (show docxerr)
+ Left err -> throwError $ PandocSomeError $
+ "couldn't unpack docx container: " <> T.pack err
data DState = DState { docxAnchorMap :: M.Map T.Text T.Text
, docxAnchorSet :: Set.Set T.Text