aboutsummaryrefslogtreecommitdiff
path: root/src/Text/Pandoc/Lua.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Text/Pandoc/Lua.hs')
-rw-r--r--src/Text/Pandoc/Lua.hs13
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