@@ -16,7 +16,6 @@ import Text.Pandoc.Options ( ReaderOptions(..))
16import Text.Pandoc.Extensions (enableExtension, Extension(Ext_raw_html))
16import Text.Pandoc.Extensions (enableExtension, Extension(Ext_raw_html))
17import Text.Pandoc.Shared (escapeURI, collapseFilePath, addMetaField)
17import Text.Pandoc.Shared (escapeURI, collapseFilePath, addMetaField)
18import Network.URI (unEscapeString)
18import Network.URI (unEscapeString)
19−import Text.Pandoc.MediaBag (MediaBag, insertMedia)
20import Control.Monad.Except (throwError)
19import Control.Monad.Except (throwError)
21import Text.Pandoc.MIME (MimeType)
20import Text.Pandoc.MIME (MimeType)
22import qualified Text.Pandoc.Builder as B
21import qualified Text.Pandoc.Builder as B
@@ -34,8 +33,7 @@ import qualified Data.Map as M (Map, lookup, fromList, elems)
34import Data.Monoid ((<>))
33import Data.Monoid ((<>))
35import Control.DeepSeq (deepseq, NFData)
34import Control.DeepSeq (deepseq, NFData)
36import Text.Pandoc.Error
35import Text.Pandoc.Error
37−import Text.Pandoc.Class (PandocMonad)
36+import Text.Pandoc.Class (PandocMonad, insertMedia)
38−import qualified Text.Pandoc.Class as P
40type Items = M.Map String (FilePath, MimeType)
38type Items = M.Map String (FilePath, MimeType)
@@ -64,7 +62,7 @@ archiveToEPUB os archive = do
64 foldM' (\a b -> ((a <>) . walk (prependHash escapedSpine))
62 foldM' (\a b -> ((a <>) . walk (prependHash escapedSpine))
65 `liftM` parseSpineElem root b) mempty spine
63 `liftM` parseSpineElem root b) mempty spine
66 let ast = coverDoc <> (Pandoc meta bs)
64 let ast = coverDoc <> (Pandoc meta bs)
67− P.setMediaBag $ fetchImages (M.elems items) root archive ast
65+ fetchImages (M.elems items) root archive ast
68 return ast
66 return ast
70 os' = os {readerExtensions = enableExtension Ext_raw_html (readerExtensions os)}
68 os' = os {readerExtensions = enableExtension Ext_raw_html (readerExtensions os)}
@@ -85,14 +83,14 @@ archiveToEPUB os archive = do
86-- paths should be absolute when this function is called
84-- paths should be absolute when this function is called
87-- renameImages should do this
85-- renameImages should do this
86+fetchImages :: PandocMonad m
88−fetchImages :: [(FilePath, MimeType)]
87+ => [(FilePath, MimeType)]
89 -> FilePath -- ^ Root
88 -> FilePath -- ^ Root
90 -> Archive
89 -> Archive
92− -> MediaBag
91+ -> m ()
93fetchImages mimes root arc (query iq -> links) =
92fetchImages mimes root arc (query iq -> links) =
94− foldr (uncurry3 insertMedia) mempty
95− (mapMaybe getEntry links)
93+ mapM_ (uncurry3 insertMedia) (mapMaybe getEntry links)
97 getEntry link =
95 getEntry link =
98 let abslink = normalise (root </> link) in
96 let abslink = normalise (root </> link) in