Lua.PandocModule: promote addFunction to top level

This reduces some boilerplate.
This commit is contained in:
Albert Krewinkel 2017-10-03 13:13:45 +02:00
parent 5307868de5
commit 9b750f7d87
No known key found for this signature in database
GPG key ID: 388DC0B21F631124
2 changed files with 11 additions and 15 deletions

View file

@ -782,7 +782,7 @@ M.UpperAlpha = "UpperAlpha"
-- assert(block.content[1].t == "Emph")
function M.read(markup, format)
format = format or "markdown"
local pd = pandoc.__read(format, markup)
local pd = pandoc._read(format, markup)
if type(pd) == "string" then
error(pd)
else

View file

@ -41,6 +41,7 @@ import Data.IORef
import Data.Maybe (fromMaybe)
import Data.Text (pack)
import Foreign.Lua (Lua, FromLuaStack, ToLuaStack, NumResults, liftIO)
import Foreign.Lua.FunctionCalling (ToHaskellFunction)
import Text.Pandoc.Class (readDataFile, runIO,
runIOorExplode, setUserDataDir, CommonState(..),
putCommonState, fetchItem, setMediaBag)
@ -62,15 +63,9 @@ pushPandocModule datadir = do
script <- liftIO (pandocModuleScript datadir)
status <- Lua.loadstring script
unless (status /= Lua.OK) $ Lua.call 0 1
Lua.push "__read"
Lua.pushHaskellFunction readDoc
Lua.rawset (-3)
Lua.push "sha1"
Lua.pushHaskellFunction sha1HashFn
Lua.rawset (-3)
Lua.push "pipe"
Lua.pushHaskellFunction pipeFn
Lua.rawset (-3)
addFunction "pipe" pipeFn
addFunction "_read" readDoc
addFunction "sha1" sha1HashFn
-- | Get the string representation of the pandoc module
pandocModuleScript :: Maybe FilePath -> IO String
@ -102,7 +97,8 @@ pushMediaBagModule commonState mediaBagRef = do
addFunction "list" (mediaDirectoryFn mediaBagRef)
addFunction "fetch" (fetch commonState mediaBagRef)
return ()
where
addFunction :: ToHaskellFunction a => String -> a -> Lua ()
addFunction name fn = do
Lua.push name
Lua.pushHaskellFunction fn