Lua.PandocModule: promote addFunction to top level
This reduces some boilerplate.
This commit is contained in:
parent
5307868de5
commit
9b750f7d87
2 changed files with 11 additions and 15 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue