From 896c288625a8c48e290fe86e90b65109bd4fce9f Mon Sep 17 00:00:00 2001 From: John MacFarlane <jgm@berkeley.edu> Date: Sat, 30 Sep 2017 17:19:39 -0500 Subject: Lua filters: make sure whole CommonState is passed through... to insertResource (`fetch`). --- src/Text/Pandoc/Lua/PandocModule.hs | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) (limited to 'src/Text/Pandoc/Lua') diff --git a/src/Text/Pandoc/Lua/PandocModule.hs b/src/Text/Pandoc/Lua/PandocModule.hs index 326de1886..bf45cab17 100644 --- a/src/Text/Pandoc/Lua/PandocModule.hs +++ b/src/Text/Pandoc/Lua/PandocModule.hs @@ -41,7 +41,8 @@ import Data.IORef import Data.Text (pack) import Foreign.Lua (Lua, FromLuaStack, ToLuaStack, NumResults, liftIO) import Text.Pandoc.Class (fetchMediaResource, readDataFile, runIO, - runIOorExplode, setUserDataDir) + runIOorExplode, setUserDataDir, CommonState(..), + putCommonState) import Text.Pandoc.Options (ReaderOptions(readerExtensions)) import Text.Pandoc.Lua.StackInstances () import Text.Pandoc.Readers (Reader (..), getReader) @@ -83,13 +84,13 @@ readDoc formatSpec content = do -- -- MediaBag submodule -- -pushMediaBagModule :: IORef MB.MediaBag -> Lua () -pushMediaBagModule mediaBagRef = do +pushMediaBagModule :: CommonState -> IORef MB.MediaBag -> Lua () +pushMediaBagModule commonState mediaBagRef = do Lua.newtable addFunction "insert" (insertMediaFn mediaBagRef) addFunction "lookup" (lookupMediaFn mediaBagRef) addFunction "list" (mediaDirectoryFn mediaBagRef) - addFunction "fetch" (insertResource mediaBagRef) + addFunction "fetch" (insertResource commonState mediaBagRef) return () where addFunction name fn = do @@ -103,7 +104,8 @@ insertMediaFn :: IORef MB.MediaBag -> BL.ByteString -> Lua NumResults insertMediaFn mbRef fp nilOrMime contents = do - liftIO . modifyIORef' mbRef $ MB.insertMedia fp (toMaybe nilOrMime) contents + liftIO . modifyIORef' mbRef $ + MB.insertMedia fp (toMaybe nilOrMime) contents return 0 lookupMediaFn :: IORef MB.MediaBag @@ -134,12 +136,15 @@ mediaDirectoryFn mbRef = do Lua.push "length" *> Lua.push contentLength *> Lua.rawset (-3) Lua.rawseti (-2) idx -insertResource :: IORef MB.MediaBag +insertResource :: CommonState + -> IORef MB.MediaBag -> String -> Lua NumResults -insertResource mbRef src = do - (fp, mimeType, bs) <- liftIO . runIOorExplode $ fetchMediaResource src - liftIO $ print (fp, mimeType) +insertResource commonState mbRef src = do + (fp, mimeType, bs) <- liftIO . runIOorExplode $ do + putCommonState commonState + fetchMediaResource src + liftIO $ print (fp, mimeType) -- TODO DEBUG insertMediaFn mbRef fp (OrNil mimeType) bs -- -- cgit v1.2.3