git.iko.soy/typeable/pandoc
on master help sign in
Use throwError instead of fail when appropriate.
commitdf74eea69a73ecf446b615189537be831d50952e authorJohn MacFarlane <jgm@berkeley.edu> dateSat 28 Sep 2019, 12:36 (7 years ago) parentc86691f
3 files changed+14−6
src/Text/Pandoc/Readers/Markdown.hs+3−2 src/Text/Pandoc/Writers/Muse.hs+4−1 src/Text/Pandoc/Writers/OOXML.hs+7−3
src/Text/Pandoc/Readers/Markdown.hs+3−2
@@ -258,10 +258,11 @@ yamlBsToMeta bstr = do
258258 err' pos
259259 return . return $ mempty
260260
261−nodeToKey :: Monad m => YAML.Node YE.Pos -> m Text
261+nodeToKey :: PandocMonad m => YAML.Node YE.Pos -> m Text
262262nodeToKey (YAML.Scalar _ (YAML.SStr t)) = return t
263263nodeToKey (YAML.Scalar _ (YAML.SUnknown _ t)) = return t
264−nodeToKey _ = Prelude.fail "Non-string key in YAML mapping"
264+nodeToKey _ = throwError $ PandocParseError
265+ "Non-string key in YAML mapping"
265266
266267toMetaValue :: PandocMonad m
267268 => Text -> MarkdownParser m (F MetaValue)
src/Text/Pandoc/Writers/Muse.hs+4−1
@@ -26,6 +26,7 @@ even though it is supported only in Emacs Muse.
2626-}
2727module Text.Pandoc.Writers.Muse (writeMuse) where
2828import Prelude
29+import Control.Monad.Except (throwError)
2930import Control.Monad.Reader
3031import Control.Monad.State.Strict
3132import Data.Char (isAlphaNum, isAsciiLower, isAsciiUpper, isDigit, isSpace)
@@ -37,6 +38,7 @@ import Data.Text (Text)
3738import System.FilePath (takeExtension)
3839import Text.Pandoc.Class (PandocMonad)
3940import Text.Pandoc.Definition
41+import Text.Pandoc.Error
4042import Text.Pandoc.ImageSize
4143import Text.Pandoc.Options
4244import Text.DocLayout
@@ -607,7 +609,8 @@ inlineToMuse (Subscript lst) = do
607609 modify $ \st -> st { stUseTags = False }
608610 return $ "<sub>" <> contents <> "</sub>"
609611inlineToMuse SmallCaps {} =
610− Prelude.fail "SmallCaps should be expanded before normalization"
612+ throwError $ PandocShouldNeverHappenError
613+ "SmallCaps should be expanded before normalization"
611614inlineToMuse (Quoted SingleQuote lst) = do
612615 contents <- inlineListToMuse lst
613616 modify $ \st -> st { stUseTags = False }
src/Text/Pandoc/Writers/OOXML.hs+7−3
@@ -25,6 +25,8 @@ module Text.Pandoc.Writers.OOXML ( mknode
2525import Prelude
2626import Codec.Archive.Zip
2727import Control.Monad.Reader
28+import Control.Monad.Except (throwError)
29+import Text.Pandoc.Error
2830import qualified Data.ByteString as B
2931import qualified Data.ByteString.Lazy as BL
3032import qualified Data.ByteString.Lazy.Char8 as BL8
@@ -50,13 +52,15 @@ renderXml :: Element -> BL.ByteString
5052renderXml elt = BL8.pack "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" <>
5153 UTF8.fromStringLazy (showElement elt)
5254
53−parseXml :: (PandocMonad m) => Archive -> Archive -> String -> m Element
55+parseXml :: PandocMonad m => Archive -> Archive -> String -> m Element
5456parseXml refArchive distArchive relpath =
5557 case findEntryByPath relpath refArchive `mplus`
5658 findEntryByPath relpath distArchive of
57− Nothing -> Prelude.fail $ relpath ++ " missing in reference file"
59+ Nothing -> throwError $ PandocSomeError $
60+ relpath ++ " missing in reference file"
5861 Just e -> case parseXMLDoc . UTF8.toStringLazy . fromEntry $ e of
59− Nothing -> Prelude.fail $ relpath ++ " corrupt in reference file"
62+ Nothing -> throwError $ PandocSomeError $
63+ relpath ++ " corrupt in reference file"
6064 Just d -> return d
6165
6266-- Copied from Util