From ab0fe676a8507ea1ff4e77b97f548a92b13b6317 Mon Sep 17 00:00:00 2001 From: Albert Krewinkel Date: Mon, 8 Nov 2021 12:14:44 +0100 Subject: Lua: ensure that 're' module is always available. The module is shipped with LPeg. --- src/Text/Pandoc/Lua/Init.hs | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src/Text/Pandoc/Lua') diff --git a/src/Text/Pandoc/Lua/Init.hs b/src/Text/Pandoc/Lua/Init.hs index 5b2a2f3e4..727c79d84 100644 --- a/src/Text/Pandoc/Lua/Init.hs +++ b/src/Text/Pandoc/Lua/Init.hs @@ -46,6 +46,7 @@ initLuaState :: PandocLua () initLuaState = do liftPandocLua Lua.openlibs installPandocPackageSearcher + installLpegSearcher initPandocModule requireGlobalModules loadInitScript "init.lua" @@ -99,6 +100,13 @@ initLuaState = do -- Module on top of stack. Register as global Lua.setglobal "lpeg" + installLpegSearcher :: PandocLua () + installLpegSearcher = liftPandocLua $ do + Lua.getglobal' "package.searchers" + Lua.pushHaskellFunction $ Lua.state >>= liftIO . LPeg.lpeg_searcher + Lua.rawseti (Lua.nth 2) . (+1) . fromIntegral =<< Lua.rawlen (Lua.nth 2) + Lua.pop 1 -- remove 'package.searchers' from stack + -- | AST elements are marshaled via normal constructor functions in the -- @pandoc@ module. However, accessing Lua globals from Haskell is -- expensive (due to error handling). Accessing the Lua registry is much -- cgit v1.2.3