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.hs | |
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.hs')
-rw-r--r-- | src/Text/Pandoc/Lua.hs | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/Text/Pandoc/Lua.hs b/src/Text/Pandoc/Lua.hs index f7e74d0a8..2e4204898 100644 --- a/src/Text/Pandoc/Lua.hs +++ b/src/Text/Pandoc/Lua.hs @@ -44,7 +44,8 @@ import Data.Map (Map) import Data.Maybe (isJust) import Foreign.Lua (Lua, FromLuaStack (peek), LuaException (..), StackIndex, Status (OK), ToLuaStack (push)) -import Text.Pandoc.Class (PandocIO, getMediaBag, setMediaBag) +import Text.Pandoc.Class (PandocIO, getMediaBag, setMediaBag, + getCommonState, CommonState) import Text.Pandoc.MediaBag (MediaBag) import Text.Pandoc.Definition import Text.Pandoc.Lua.PandocModule (pushPandocModule, pushMediaBagModule) @@ -56,17 +57,19 @@ import qualified Foreign.Lua as Lua runLuaFilter :: Maybe FilePath -> FilePath -> String -> Pandoc -> PandocIO (Either LuaException Pandoc) runLuaFilter datadir filterPath format pd = do + commonState <- getCommonState mediaBag <- getMediaBag mediaBagRef <- liftIO (newIORef mediaBag) res <- liftIO . Lua.runLuaEither $ - runLuaFilter' datadir filterPath format mediaBagRef pd + runLuaFilter' commonState datadir filterPath format mediaBagRef pd newMediaBag <- liftIO (readIORef mediaBagRef) setMediaBag newMediaBag return res -runLuaFilter' :: Maybe FilePath -> FilePath -> String -> IORef MediaBag +runLuaFilter' :: CommonState + -> Maybe FilePath -> FilePath -> String -> IORef MediaBag -> Pandoc -> Lua Pandoc -runLuaFilter' datadir filterPath format mbRef pd = do +runLuaFilter' commonState datadir filterPath format mbRef pd = do Lua.openlibs -- store module in global "pandoc" pushPandocModule datadir @@ -89,7 +92,7 @@ runLuaFilter' datadir filterPath format mbRef pd = do addMediaBagModule = do Lua.getglobal "pandoc" push "mediabag" - pushMediaBagModule mbRef + pushMediaBagModule commonState mbRef Lua.rawset (-3) registerFormat = do push format |