@@ -34,6 +34,7 @@ module Text.Pandoc.Class.PandocMonad
3434 , getLog
3535 , setVerbosity
3636 , getVerbosity
37+ , getImageAttrs
3738 , getMediaBag
3839 , setMediaBag
3940 , insertMedia
@@ -86,6 +87,7 @@ import qualified Debug.Trace
8687import qualified Text.Pandoc.MediaBag as MB
8788import qualified Data.Text.Encoding as TSE
8889import qualified Data.Text.Encoding.Error as TSE
90+ import Data.Map (Map , insert )
8991
9092-- | The PandocMonad typeclass contains all the potentially
9193-- IO-related functions used in pandoc's readers and writers.
@@ -202,12 +204,26 @@ setMediaBag mb = modifyCommonState $ \st -> st{stMediaBag = mb}
202204getMediaBag :: PandocMonad m => m MediaBag
203205getMediaBag = getsCommonState stMediaBag
204206
205- -- | Insert an item into the media bag.
207+ -- | Initialize the image attributes
208+ setImageAttrs :: PandocMonad m => Map FilePath Attr -> m ()
209+ setImageAttrs mb = modifyCommonState $ \ st -> st{stImageAttrs = mb}
210+
211+ -- | Retrieve the image attributes
212+ getImageAttrs :: PandocMonad m => m (Map FilePath Attr )
213+ getImageAttrs = getsCommonState stImageAttrs
214+
206215insertMedia :: PandocMonad m => FilePath -> Maybe MimeType -> BL. ByteString -> m ()
207216insertMedia fp mime bs = do
208- mb <- getMediaBag
209- let mb' = MB. insertMedia fp mime bs mb
210- setMediaBag mb'
217+ mb <- getMediaBag
218+ let mb' = MB. insertMedia fp mime bs mb
219+ setMediaBag mb'
220+
221+ -- | Insert an item into the media bag.
222+ insertAttr :: PandocMonad m => FilePath -> Attr -> m ()
223+ insertAttr fp attr = do
224+ attrs <- getImageAttrs
225+ let attrs' = Data.Map. insert fp attr attrs
226+ setImageAttrs attrs'
211227
212228-- | Retrieve the input filenames.
213229getInputFiles :: PandocMonad m => m [FilePath ]
@@ -464,6 +480,7 @@ fillMediaBag d = walkM handleImage d
464480 Nothing -> do
465481 (bs, mt) <- fetchItem src
466482 insertMedia fp mt (BL. fromStrict bs)
483+ insertAttr fp attr
467484 return $ Image attr lab (src, tit))
468485 (\ e ->
469486 case e of
0 commit comments