diff options
| author | John MacFarlane <jgm@berkeley.edu> | 2017-10-03 15:36:23 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-10-03 15:36:23 -0400 |
| commit | 582169cdca1488ebafc2aa989d50faf1576eee7c (patch) | |
| tree | 373a9547afe8996d7d714ac71d956c99ee0f80a3 /src | |
| parent | d259e7e5b51c41b24d6ae41750a3b8d11afd1ae4 (diff) | |
| parent | 371f9b708478700992a74864985cfea0af2fd4c3 (diff) | |
| download | pandoc-582169cdca1488ebafc2aa989d50faf1576eee7c.tar.gz | |
Merge pull request #3952 from tarleb/lua-pipe-wrapper
Lua pipe wrapper
Diffstat (limited to 'src')
| -rw-r--r-- | src/Text/Pandoc/Lua/PandocModule.hs | 24 |
1 files changed, 10 insertions, 14 deletions
diff --git a/src/Text/Pandoc/Lua/PandocModule.hs b/src/Text/Pandoc/Lua/PandocModule.hs index 6a84a4350..f9b072dff 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 |
