aboutsummaryrefslogtreecommitdiff
path: root/src/Text/Pandoc/Lua/Util.hs
diff options
context:
space:
mode:
authorAlbert Krewinkel <albert@zeitkraut.de>2021-10-26 21:39:24 +0200
committerAlbert Krewinkel <albert@zeitkraut.de>2021-10-26 21:45:16 +0200
commitb95e864ecfc0a0ef96fa09d4118c8e6b4033784c (patch)
tree65b6cbf01483bbf7d932d82bb95c8549cc69799f /src/Text/Pandoc/Lua/Util.hs
parent80ed81822e27ac0d09e365ccc6f6508f3b1b4a9b (diff)
downloadpandoc-b95e864ecfc0a0ef96fa09d4118c8e6b4033784c.tar.gz
Lua: marshal SimpleTable values as userdata objects
Diffstat (limited to 'src/Text/Pandoc/Lua/Util.hs')
-rw-r--r--src/Text/Pandoc/Lua/Util.hs28
1 files changed, 0 insertions, 28 deletions
diff --git a/src/Text/Pandoc/Lua/Util.hs b/src/Text/Pandoc/Lua/Util.hs
index 50157189f..f20bc09e8 100644
--- a/src/Text/Pandoc/Lua/Util.hs
+++ b/src/Text/Pandoc/Lua/Util.hs
@@ -19,7 +19,6 @@ module Text.Pandoc.Lua.Util
( getTag
, addField
, addFunction
- , pushViaConstructor
, callWithTraceback
, dofileWithTraceback
, pushViaConstr'
@@ -44,33 +43,6 @@ addFunction name fn = do
Lua.pushHaskellFunction $ toHaskellFunction fn
Lua.rawset (-3)
--- | Helper class for pushing a single value to the stack via a lua
--- function. See @pushViaCall@.
-class LuaError e => PushViaCall e a where
- pushViaCall' :: LuaError e => Name -> LuaE e () -> NumArgs -> a
-
-instance LuaError e => PushViaCall e (LuaE e ()) where
- pushViaCall' fn pushArgs num = do
- Lua.pushName @e fn
- Lua.rawget Lua.registryindex
- pushArgs
- Lua.call num 1
-
-instance (LuaError e, Pushable a, PushViaCall e b) =>
- PushViaCall e (a -> b) where
- pushViaCall' fn pushArgs num x =
- pushViaCall' @e fn (pushArgs *> Lua.push x) (num + 1)
-
--- | Push an value to the stack via a lua function. The lua function is called
--- with all arguments that are passed to this function and is expected to return
--- a single value.
-pushViaCall :: forall e a. LuaError e => PushViaCall e a => Name -> a
-pushViaCall fn = pushViaCall' @e fn (return ()) 0
-
--- | Call a pandoc element constructor within Lua, passing all given arguments.
-pushViaConstructor :: forall e a. LuaError e => PushViaCall e a => Name -> a
-pushViaConstructor pandocFn = pushViaCall @e ("pandoc." <> pandocFn)
-
-- | Get the tag of a value. This is an optimized and specialized version of
-- @Lua.getfield idx "tag"@. It only checks for the field on the table at index
-- @idx@ and on its metatable, also ignoring any @__index@ value on the