summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data/pandoc.lua2
-rw-r--r--src/Text/Pandoc/Lua/PandocModule.hs24
2 files changed, 11 insertions, 15 deletions
diff --git a/data/pandoc.lua b/data/pandoc.lua
index bce4e9326..e6cfbc90c 100644
--- a/data/pandoc.lua
+++ b/data/pandoc.lua
@@ -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
diff --git a/src/Text/Pandoc/Lua/PandocModule.hs b/src/Text/Pandoc/Lua/PandocModule.hs
index 6a84a4350..c689edc4e 100644
--- a/src/Text/Pandoc/Lua/PandocModule.hs
+++ b/src/Text/Pandoc/Lua/PandocModule.hs
@@ -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,11 +97,12 @@ pushMediaBagModule commonState mediaBagRef = do
addFunction "list" (mediaDirectoryFn mediaBagRef)
addFunction "fetch" (fetch commonState mediaBagRef)
return ()
- where
- addFunction name fn = do
- Lua.push name
- Lua.pushHaskellFunction fn
- Lua.rawset (-3)
+
+addFunction :: ToHaskellFunction a => String -> a -> Lua ()
+addFunction name fn = do
+ Lua.push name
+ Lua.pushHaskellFunction fn
+ Lua.rawset (-3)
sha1HashFn :: BL.ByteString
-> Lua NumResults