diff options
Diffstat (limited to 'src/Text/Pandoc/Lua')
| -rw-r--r-- | src/Text/Pandoc/Lua/Module/Utils.hs | 2 | ||||
| -rw-r--r-- | src/Text/Pandoc/Lua/Packages.hs | 7 | ||||
| -rw-r--r-- | src/Text/Pandoc/Lua/Util.hs | 7 |
3 files changed, 12 insertions, 4 deletions
diff --git a/src/Text/Pandoc/Lua/Module/Utils.hs b/src/Text/Pandoc/Lua/Module/Utils.hs index 11a0bda84..f8f1707bd 100644 --- a/src/Text/Pandoc/Lua/Module/Utils.hs +++ b/src/Text/Pandoc/Lua/Module/Utils.hs @@ -30,6 +30,7 @@ import qualified Foreign.Lua as Lua import qualified Text.Pandoc.Builder as B import qualified Text.Pandoc.Filter.JSON as JSONFilter import qualified Text.Pandoc.Shared as Shared +import Text.Pandoc.Data (initializeDataFiles) -- | Push the "pandoc.utils" module to the lua stack. pushModule :: Maybe FilePath -> Lua NumResults @@ -79,6 +80,7 @@ runJSONFilter mbDatadir doc filterFile optArgs = do Lua.getglobal "FORMAT" (:[]) <$> Lua.popValue filterRes <- Lua.liftIO . runIO $ do + initializeDataFiles setUserDataDir mbDatadir JSONFilter.apply def args filterFile doc case filterRes of diff --git a/src/Text/Pandoc/Lua/Packages.hs b/src/Text/Pandoc/Lua/Packages.hs index ad338f4bd..a0c50b631 100644 --- a/src/Text/Pandoc/Lua/Packages.hs +++ b/src/Text/Pandoc/Lua/Packages.hs @@ -20,7 +20,7 @@ import Data.ByteString (ByteString) import Foreign.Lua (Lua, NumResults, liftIO) import Text.Pandoc.Class.PandocIO (runIO) import Text.Pandoc.Class.PandocMonad (readDataFile, setUserDataDir) - +import Text.Pandoc.Data (initializeDataFiles) import qualified Foreign.Lua as Lua import Text.Pandoc.Lua.Module.Pandoc as Pandoc import Text.Pandoc.Lua.Module.MediaBag as MediaBag @@ -83,7 +83,10 @@ loadStringAsPackage pkgName script = do -- | Get the ByteString representation of the pandoc module. dataDirScript :: Maybe FilePath -> FilePath -> IO (Maybe ByteString) dataDirScript datadir moduleFile = do - res <- runIO $ setUserDataDir datadir >> readDataFile moduleFile + res <- runIO $ do + initializeDataFiles + setUserDataDir datadir + readDataFile moduleFile return $ case res of Left _ -> Nothing Right s -> Just s diff --git a/src/Text/Pandoc/Lua/Util.hs b/src/Text/Pandoc/Lua/Util.hs index d79fbb085..00325e61e 100644 --- a/src/Text/Pandoc/Lua/Util.hs +++ b/src/Text/Pandoc/Lua/Util.hs @@ -31,6 +31,7 @@ import Foreign.Lua ( Lua, NumArgs, NumResults, Peekable, Pushable, StackIndex , Status, ToHaskellFunction ) import Text.Pandoc.Class.PandocIO (runIOorExplode) import Text.Pandoc.Class.PandocMonad (readDataFile, setUserDataDir) +import Text.Pandoc.Data (initializeDataFiles) import qualified Foreign.Lua as Lua import qualified Text.Pandoc.UTF8 as UTF8 import Data.Text (Text) @@ -90,8 +91,10 @@ pushViaConstructor pandocFn = pushViaCall ("pandoc." ++ pandocFn) -- | Load a file from pandoc's data directory. loadScriptFromDataDir :: Maybe FilePath -> FilePath -> Lua () loadScriptFromDataDir datadir scriptFile = do - script <- Lua.liftIO . runIOorExplode $ - setUserDataDir datadir >> readDataFile scriptFile + script <- Lua.liftIO . runIOorExplode $ do + initializeDataFiles + setUserDataDir datadir + readDataFile scriptFile status <- Lua.dostring script when (status /= Lua.OK) $ throwTopMessageAsError' (("Couldn't load '" ++ scriptFile ++ "'.\n") ++) |
