{- | Module : Text.Pandoc.Throw License : MIT Stability : experimental MonadThrow behaviour for Pandoc -} module Text.Pandoc.Throw ( runPandocPureThrow , runPandocIOThrow ) where import Control.Monad.Catch import Control.Monad.IO.Class import Text.Pandoc -- | Run a `PandocPure` expression, lifting errors to `MonadThrow`. runPandocPureThrow :: MonadThrow m => PandocPure a -> m a runPandocPureThrow = either throwM return . runPure -- | Run a `PandocIO` expression, lifting errors to `MonadThrow`. runPandocIOThrow :: (MonadIO m, MonadThrow m) => PandocIO a -> m a runPandocIOThrow p = do result <- liftIO $ runIO p either throwM return result