git.iko.soy/typeable/pandoc
on master help sign in
Docx Reader: Add a compatibility layer for Except.
fe2eda9Jesse Rosenthal
pandoc.cabal+1
@@ -340,6 +340,7 @@ Library
340 Text.Pandoc.Slides,
340 Text.Pandoc.Slides,
341 Text.Pandoc.Highlighting,
341 Text.Pandoc.Highlighting,
342 Text.Pandoc.Compat.Monoid,
342 Text.Pandoc.Compat.Monoid,
343+ Text.Pandoc.Compat.Except,
343 Text.Pandoc.Compat.TagSoupEntity,
344 Text.Pandoc.Compat.TagSoupEntity,
344 Paths_pandoc
345 Paths_pandoc
345
346
src/Text/Pandoc/Compat/Except.hsnew file+27
@@ -0,0 +1,27 @@
1+{-# LANGUAGE CPP #-}
2+module Text.Pandoc.Compat.Except ( ExceptT
3+ , Error(..)
4+ , runExceptT
5+ , throwError
6+ , catchError )
7+ where
8+
9+#if MIN_VERSION_mtl(2,2,1)
10+import Control.Monad.Except
11+
12+class Error a where
13+ noMsg :: a
14+ strMsg :: String -> a
15+
16+ noMsg = strMsg ""
17+ strMsg _ = noMsg
18+
19+#else
20+import Control.Monad.Error
21+type ExceptT = ErrorT
22+
23+runExceptT :: ExceptT e m a -> m (Either e a)
24+runExceptT = runErrorT
25+#endif
26+
27+
src/Text/Pandoc/Readers/Docx/Parse.hs+3−3
@@ -69,7 +69,7 @@ import qualified Data.ByteString.Lazy as B
69import qualified Text.Pandoc.UTF8 as UTF8
69import qualified Text.Pandoc.UTF8 as UTF8
70import Control.Monad.Reader
70import Control.Monad.Reader
71import qualified Data.Map as M
71import qualified Data.Map as M
72−import Control.Monad.Error
72+import Text.Pandoc.Compat.Except
73
73
74data ReaderEnv = ReaderEnv { envNotes :: Notes
74data ReaderEnv = ReaderEnv { envNotes :: Notes
75 , envNumbering :: Numbering
75 , envNumbering :: Numbering
@@ -84,10 +84,10 @@ data DocxError = DocxError | WrongElem
84instance Error DocxError where
84instance Error DocxError where
85 noMsg = WrongElem
85 noMsg = WrongElem
86
86
87−type D = ErrorT DocxError (Reader ReaderEnv)
87+type D = ExceptT DocxError (Reader ReaderEnv)
88
88
89runD :: D a -> ReaderEnv -> Either DocxError a
89runD :: D a -> ReaderEnv -> Either DocxError a
90−runD dx re = runReader (runErrorT dx ) re
90+runD dx re = runReader (runExceptT dx ) re
91
91
92maybeToD :: Maybe a -> D a
92maybeToD :: Maybe a -> D a
93maybeToD (Just a) = return a
93maybeToD (Just a) = return a