git.iko.soy/typeable/pandoc
on master help sign in
EPUB reader: minor refactoring, avoiding explicit MediaBag handling.

This all works behind the scenes in CommonState plumbing.

commit693674779423c21305c483251915e918c9d6508e authorJohn MacFarlane <jgm@berkeley.edu> dateFri 24 Feb 2017, 13:39 (10 years ago) parentce647d1
1 file changed+6−8
src/Text/Pandoc/Readers/EPUB.hs+6−8
src/Text/Pandoc/Readers/EPUB.hs+6−8
@@ -16,7 +16,6 @@ import Text.Pandoc.Options ( ReaderOptions(..))
1616import Text.Pandoc.Extensions (enableExtension, Extension(Ext_raw_html))
1717import Text.Pandoc.Shared (escapeURI, collapseFilePath, addMetaField)
1818import Network.URI (unEscapeString)
19−import Text.Pandoc.MediaBag (MediaBag, insertMedia)
2019import Control.Monad.Except (throwError)
2120import Text.Pandoc.MIME (MimeType)
2221import qualified Text.Pandoc.Builder as B
@@ -34,8 +33,7 @@ import qualified Data.Map as M (Map, lookup, fromList, elems)
3433import Data.Monoid ((<>))
3534import Control.DeepSeq (deepseq, NFData)
3635import Text.Pandoc.Error
37−import Text.Pandoc.Class (PandocMonad)
38−import qualified Text.Pandoc.Class as P
36+import Text.Pandoc.Class (PandocMonad, insertMedia)
3937
4038type Items = M.Map String (FilePath, MimeType)
4139
@@ -64,7 +62,7 @@ archiveToEPUB os archive = do
6462 foldM' (\a b -> ((a <>) . walk (prependHash escapedSpine))
6563 `liftM` parseSpineElem root b) mempty spine
6664 let ast = coverDoc <> (Pandoc meta bs)
67− P.setMediaBag $ fetchImages (M.elems items) root archive ast
65+ fetchImages (M.elems items) root archive ast
6866 return ast
6967 where
7068 os' = os {readerExtensions = enableExtension Ext_raw_html (readerExtensions os)}
@@ -85,14 +83,14 @@ archiveToEPUB os archive = do
8583
8684-- paths should be absolute when this function is called
8785-- renameImages should do this
88−fetchImages :: [(FilePath, MimeType)]
86+fetchImages :: PandocMonad m
87+ => [(FilePath, MimeType)]
8988 -> FilePath -- ^ Root
9089 -> Archive
9190 -> Pandoc
92− -> MediaBag
91+ -> m ()
9392fetchImages mimes root arc (query iq -> links) =
94− foldr (uncurry3 insertMedia) mempty
95− (mapMaybe getEntry links)
93+ mapM_ (uncurry3 insertMedia) (mapMaybe getEntry links)
9694 where
9795 getEntry link =
9896 let abslink = normalise (root </> link) in