aboutsummaryrefslogtreecommitdiff
path: root/src/Text/Pandoc/Lua/Module/Types.hs
diff options
context:
space:
mode:
authorAlbert Krewinkel <albert@zeitkraut.de>2021-11-28 02:08:01 +0100
committerGitHub <noreply@github.com>2021-11-27 17:08:01 -0800
commit3692a1d1e83703fbf235214f2838cd92683c625c (patch)
tree2eb377285e1ca485c03ea60eef1d92ff58827666 /src/Text/Pandoc/Lua/Module/Types.hs
parent0d25232bbf2998cccf6ca4b1dc6e8d6f36eb9c60 (diff)
downloadpandoc-3692a1d1e83703fbf235214f2838cd92683c625c.tar.gz
Lua: use package pandoc-lua-marshal (#7719)
The marshaling functions for pandoc's AST are extracted into a separate package. The package comes with a number of changes: - Pandoc's List module was rewritten in C, thereby improving error messages. - Lists of `Block` and `Inline` elements are marshaled using the new list types `Blocks` and `Inlines`, respectively. These types currently behave identical to the generic List type, but give better error messages. This also opens up the possibility of adding element-specific methods to these lists in the future. - Elements of type `MetaValue` are no longer pushed as values which have `.t` and `.tag` properties. This was already true for `MetaString` and `MetaBool` values, which are still marshaled as Lua strings and booleans, respectively. Affected values: + `MetaBlocks` values are marshaled as a `Blocks` list; + `MetaInlines` values are marshaled as a `Inlines` list; + `MetaList` values are marshaled as a generic pandoc `List`s. + `MetaMap` values are marshaled as plain tables and no longer given any metatable. - The test suite for marshaled objects and their constructors has been extended and improved. - A bug in Citation objects, where setting a citation's suffix modified it's prefix, has been fixed.
Diffstat (limited to 'src/Text/Pandoc/Lua/Module/Types.hs')
-rw-r--r--src/Text/Pandoc/Lua/Module/Types.hs30
1 files changed, 3 insertions, 27 deletions
diff --git a/src/Text/Pandoc/Lua/Module/Types.hs b/src/Text/Pandoc/Lua/Module/Types.hs
index 4b37dafd9..f16737f63 100644
--- a/src/Text/Pandoc/Lua/Module/Types.hs
+++ b/src/Text/Pandoc/Lua/Module/Types.hs
@@ -13,14 +13,11 @@ module Text.Pandoc.Lua.Module.Types
( documentedModule
) where
-import HsLua ( LuaE, NumResults, Peeker, Pusher, Module (..), Field (..)
- , defun, functionResult, parameter, (###), (<#>), (=#>))
+import HsLua ( Module (..), (###), (<#>), (=#>)
+ , defun, functionResult, parameter)
import HsLua.Module.Version (peekVersionFuzzy, pushVersion)
import Text.Pandoc.Error (PandocError)
import Text.Pandoc.Lua.ErrorConversion ()
-import Text.Pandoc.Lua.Marshaling.AST
-
-import qualified HsLua as Lua
-- | Push the pandoc.types module on the Lua stack.
documentedModule :: Module PandocError
@@ -28,16 +25,7 @@ documentedModule = Module
{ moduleName = "pandoc.types"
, moduleDescription =
"Constructors for types that are not part of the pandoc AST."
- , moduleFields =
- [ Field
- { fieldName = "clone"
- , fieldDescription = "DEPRECATED! Helper functions for element cloning."
- , fieldPushValue = do
- Lua.newtable
- addFunction "Meta" $ cloneWith peekMeta pushMeta
- addFunction "MetaValue" $ cloneWith peekMetaValue pushMetaValue
- }
- ]
+ , moduleFields = []
, moduleFunctions =
[ defun "Version"
### return
@@ -52,15 +40,3 @@ documentedModule = Module
]
, moduleOperations = []
}
- where addFunction name fn = do
- Lua.pushName name
- Lua.pushHaskellFunction fn
- Lua.rawset (Lua.nth 3)
-
-cloneWith :: Peeker PandocError a
- -> Pusher PandocError a
- -> LuaE PandocError NumResults
-cloneWith peeker pusher = do
- x <- Lua.forcePeek $ peeker (Lua.nthBottom 1)
- pusher x
- return (Lua.NumResults 1)