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