diff options
author | John MacFarlane <jgm@berkeley.edu> | 2017-09-30 17:19:39 -0500 |
---|---|---|
committer | John MacFarlane <jgm@berkeley.edu> | 2017-09-30 17:20:44 -0500 |
commit | 896c288625a8c48e290fe86e90b65109bd4fce9f (patch) | |
tree | 5c2a17c4de36353edbd46303f543a228934e185e /src/Text/Pandoc/Lua | |
parent | 99aba1e7886d27ede519dede87652e0bda9a1d08 (diff) | |
download | pandoc-896c288625a8c48e290fe86e90b65109bd4fce9f.tar.gz |
Lua filters: make sure whole CommonState is passed through...
to insertResource (`fetch`).
Diffstat (limited to 'src/Text/Pandoc/Lua')
-rw-r--r-- | src/Text/Pandoc/Lua/PandocModule.hs | 23 |
1 files changed, 14 insertions, 9 deletions
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 -- |