diff options
| author | Albert Krewinkel <albert@zeitkraut.de> | 2018-10-26 22:15:25 +0200 |
|---|---|---|
| committer | Albert Krewinkel <albert@zeitkraut.de> | 2018-10-26 22:24:21 +0200 |
| commit | 7f70aaa5fa5f69f5f72ff7ee67a1306425052113 (patch) | |
| tree | da5a638e0a7cdcee4acb41a70668d2ca016e313f /src/Text/Pandoc/Lua/Init.hs | |
| parent | dc572e8a250e7561e39286fda94d7c315f6331a0 (diff) | |
Text.Pandoc.Lua: move globals handling to separate module
Diffstat (limited to 'src/Text/Pandoc/Lua/Init.hs')
| -rw-r--r-- | src/Text/Pandoc/Lua/Init.hs | 39 |
1 files changed, 18 insertions, 21 deletions
diff --git a/src/Text/Pandoc/Lua/Init.hs b/src/Text/Pandoc/Lua/Init.hs index 78fb6204e..c9ee7267a 100644 --- a/src/Text/Pandoc/Lua/Init.hs +++ b/src/Text/Pandoc/Lua/Init.hs @@ -32,20 +32,17 @@ module Text.Pandoc.Lua.Init , runPandocLua , initLuaState , luaPackageParams - , registerScriptPath ) where import Prelude import Control.Monad.Trans (MonadIO (..)) import Data.Data (Data, dataTypeConstrs, dataTypeOf, showConstr) import Data.IORef (newIORef, readIORef) -import Data.Version (Version (versionBranch)) import Foreign.Lua (Lua) import GHC.IO.Encoding (getForeignEncoding, setForeignEncoding, utf8) -import Paths_pandoc (version) -import Text.Pandoc.Class (CommonState, PandocIO, getCommonState, - getUserDataDir, getMediaBag, setMediaBag) -import Text.Pandoc.Definition (pandocTypesVersion) +import Text.Pandoc.Class (PandocIO, getCommonState, getUserDataDir, + getMediaBag, setMediaBag) +import Text.Pandoc.Lua.Global (Global (..), setGlobals) import Text.Pandoc.Lua.Packages (LuaPackageParams (..), installPandocPackageSearcher) import Text.Pandoc.Lua.Util (loadScriptFromDataDir) @@ -61,11 +58,12 @@ newtype LuaException = LuaException String deriving (Show) -- initialization. runPandocLua :: Lua a -> PandocIO (Either LuaException a) runPandocLua luaOp = do - commonState <- getCommonState luaPkgParams <- luaPackageParams + globals <- defaultGlobals enc <- liftIO $ getForeignEncoding <* setForeignEncoding utf8 res <- liftIO . Lua.runEither $ do - initLuaState commonState luaPkgParams + setGlobals globals + initLuaState luaPkgParams luaOp liftIO $ setForeignEncoding enc newMediaBag <- liftIO (readIORef (luaPkgMediaBag luaPkgParams)) @@ -74,6 +72,16 @@ runPandocLua luaOp = do Left (Lua.Exception msg) -> Left (LuaException msg) Right x -> Right x +-- | Global variables which should always be set. +defaultGlobals :: PandocIO [Global] +defaultGlobals = do + commonState <- getCommonState + return + [ PANDOC_API_VERSION + , PANDOC_STATE commonState + , PANDOC_VERSION + ] + -- | Generate parameters required to setup pandoc's lua environment. luaPackageParams :: PandocIO LuaPackageParams luaPackageParams = do @@ -87,25 +95,14 @@ luaPackageParams = do } -- Initialize the lua state with all required values -initLuaState :: CommonState -> LuaPackageParams -> Lua () -initLuaState commonState luaPkgParams = do +initLuaState :: LuaPackageParams -> Lua () +initLuaState luaPkgParams = do Lua.openlibs Lua.preloadTextModule "text" - Lua.push (versionBranch version) - Lua.setglobal "PANDOC_VERSION" - Lua.push (versionBranch pandocTypesVersion) - Lua.setglobal "PANDOC_API_VERSION" - Lua.push commonState - Lua.setglobal "PANDOC_STATE" installPandocPackageSearcher luaPkgParams loadScriptFromDataDir (luaPkgDataDir luaPkgParams) "init.lua" putConstructorsInRegistry -registerScriptPath :: FilePath -> Lua () -registerScriptPath fp = do - Lua.push fp - Lua.setglobal "PANDOC_SCRIPT_FILE" - putConstructorsInRegistry :: Lua () putConstructorsInRegistry = do Lua.getglobal "pandoc" |
