@@ -41,7 +41,8 @@ import Data.IORef
4141import Data.Text (pack)
4242import Foreign.Lua (Lua, FromLuaStack, ToLuaStack, NumResults, liftIO)
4343import Text.Pandoc.Class (fetchMediaResource, readDataFile, runIO,
44− runIOorExplode, setUserDataDir)
44+ runIOorExplode, setUserDataDir, CommonState(..),
45+ putCommonState)
4546import Text.Pandoc.Options (ReaderOptions(readerExtensions))
4647import Text.Pandoc.Lua.StackInstances ()
4748import Text.Pandoc.Readers (Reader (..), getReader)
@@ -83,13 +84,13 @@ readDoc formatSpec content = do
8384--
8485-- MediaBag submodule
8586--
86−pushMediaBagModule :: IORef MB.MediaBag -> Lua ()
87−pushMediaBagModule mediaBagRef = do
87+pushMediaBagModule :: CommonState -> IORef MB.MediaBag -> Lua ()
88+pushMediaBagModule commonState mediaBagRef = do
8889 Lua.newtable
8990 addFunction "insert" (insertMediaFn mediaBagRef)
9091 addFunction "lookup" (lookupMediaFn mediaBagRef)
9192 addFunction "list" (mediaDirectoryFn mediaBagRef)
92− addFunction "fetch" (insertResource mediaBagRef)
93+ addFunction "fetch" (insertResource commonState mediaBagRef)
9394 return ()
9495 where
9596 addFunction name fn = do
@@ -103,7 +104,8 @@ insertMediaFn :: IORef MB.MediaBag
103104 -> BL.ByteString
104105 -> Lua NumResults
105106insertMediaFn mbRef fp nilOrMime contents = do
106− liftIO . modifyIORef' mbRef $ MB.insertMedia fp (toMaybe nilOrMime) contents
107+ liftIO . modifyIORef' mbRef $
108+ MB.insertMedia fp (toMaybe nilOrMime) contents
107109 return 0
108110
109111lookupMediaFn :: IORef MB.MediaBag
@@ -134,12 +136,15 @@ mediaDirectoryFn mbRef = do
134136 Lua.push "length" *> Lua.push contentLength *> Lua.rawset (-3)
135137 Lua.rawseti (-2) idx
136138
137−insertResource :: IORef MB.MediaBag
139+insertResource :: CommonState
140+ -> IORef MB.MediaBag
138141 -> String
139142 -> Lua NumResults
140−insertResource mbRef src = do
141− (fp, mimeType, bs) <- liftIO . runIOorExplode $ fetchMediaResource src
142− liftIO $ print (fp, mimeType)
143+insertResource commonState mbRef src = do
144+ (fp, mimeType, bs) <- liftIO . runIOorExplode $ do
145+ putCommonState commonState
146+ fetchMediaResource src
147+ liftIO $ print (fp, mimeType) -- TODO DEBUG
143148 insertMediaFn mbRef fp (OrNil mimeType) bs
144149
145150--