aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlbert Krewinkel <[email protected]>2023-02-23 11:22:50 +0100
committerAlbert Krewinkel <[email protected]>2023-03-13 13:23:43 +0100
commit0f7653cd10deeeeb646809f9210a46087ff6e4c7 (patch)
treeda76bee01808a9adc2f2d481501cd5a3adc62016
parent7916940c23f68037a8579b2d3076abd269578233 (diff)
Switch to hslua-2.3
-rw-r--r--pandoc-cli/pandoc-cli.cabal2
-rw-r--r--pandoc-lua-engine/pandoc-lua-engine.cabal22
-rw-r--r--pandoc-lua-engine/src/Text/Pandoc/Lua/Custom.hs4
-rw-r--r--pandoc-lua-engine/src/Text/Pandoc/Lua/Filter.hs2
-rw-r--r--pandoc-lua-engine/src/Text/Pandoc/Lua/Init.hs1
-rw-r--r--pandoc-lua-engine/src/Text/Pandoc/Lua/Module/CLI.hs2
-rw-r--r--pandoc-lua-engine/src/Text/Pandoc/Lua/Module/Format.hs1
-rw-r--r--pandoc-lua-engine/src/Text/Pandoc/Lua/Module/JSON.hs2
-rw-r--r--pandoc-lua-engine/src/Text/Pandoc/Lua/Module/MediaBag.hs1
-rw-r--r--pandoc-lua-engine/src/Text/Pandoc/Lua/Module/Pandoc.hs10
-rw-r--r--pandoc-lua-engine/src/Text/Pandoc/Lua/Module/Scaffolding.hs2
-rw-r--r--pandoc-lua-engine/src/Text/Pandoc/Lua/Module/Structure.hs1
-rw-r--r--pandoc-lua-engine/src/Text/Pandoc/Lua/Module/System.hs1
-rw-r--r--pandoc-lua-engine/src/Text/Pandoc/Lua/Module/Template.hs3
-rw-r--r--pandoc-lua-engine/src/Text/Pandoc/Lua/Module/Types.hs1
-rw-r--r--pandoc-lua-engine/src/Text/Pandoc/Lua/Module/Utils.hs1
16 files changed, 37 insertions, 19 deletions
diff --git a/pandoc-cli/pandoc-cli.cabal b/pandoc-cli/pandoc-cli.cabal
index 149d598d9..8d9df6c38 100644
--- a/pandoc-cli/pandoc-cli.cabal
+++ b/pandoc-cli/pandoc-cli.cabal
@@ -85,7 +85,7 @@ executable pandoc
hs-source-dirs: no-server
if flag(lua)
- build-depends: hslua-cli >= 1.2 && < 1.3,
+ build-depends: hslua-cli >= 1.3 && < 1.4,
pandoc-lua-engine >= 0.1 && < 0.2
hs-source-dirs: lua
else
diff --git a/pandoc-lua-engine/pandoc-lua-engine.cabal b/pandoc-lua-engine/pandoc-lua-engine.cabal
index cbc245095..abaae611d 100644
--- a/pandoc-lua-engine/pandoc-lua-engine.cabal
+++ b/pandoc-lua-engine/pandoc-lua-engine.cabal
@@ -104,16 +104,14 @@ library
, doclayout >= 0.4 && < 0.5
, doctemplates >= 0.11 && < 0.12
, exceptions >= 0.8 && < 0.11
- , hslua >= 2.2.1 && < 2.3
- , hslua-aeson >= 2.2.1 && < 2.3
- , hslua-core >= 2.2.1 && < 2.3
- , hslua-module-doclayout>= 1.0.4 && < 1.1
- , hslua-module-path >= 1.0.3 && < 1.1
- , hslua-module-system >= 1.0.3 && < 1.1
- , hslua-module-text >= 1.0.3 && < 1.1
- , hslua-module-version >= 1.0.3 && < 1.1
- , hslua-module-zip >= 1.0.0 && < 1.1
- , lpeg >= 1.0.1 && < 1.1
+ , hslua >= 2.3 && < 2.4
+ , hslua-module-doclayout>= 1.1 && < 1.2
+ , hslua-module-path >= 1.1 && < 1.2
+ , hslua-module-system >= 1.1 && < 1.2
+ , hslua-module-text >= 1.1 && < 1.2
+ , hslua-module-version >= 1.1 && < 1.2
+ , hslua-module-zip >= 1.1 && < 1.2
+ , lpeg >= 1.0.4 && < 1.1
, mtl >= 2.2 && < 2.4
, pandoc >= 3.1 && < 3.2
, pandoc-lua-marshal >= 0.2.1 && < 0.3
@@ -133,13 +131,13 @@ test-suite test-pandoc-lua-engine
, data-default
, exceptions >= 0.8 && < 0.11
, filepath
- , hslua >= 2.1 && < 2.3
+ , hslua >= 2.3 && < 2.4
, pandoc
, pandoc-types >= 1.22 && < 1.24
, tasty
, tasty-golden
, tasty-hunit
- , tasty-lua >= 1.0 && < 1.1
+ , tasty-lua >= 1.1 && < 1.2
, text >= 1.1.1 && < 2.1
other-modules: Tests.Lua
, Tests.Lua.Module
diff --git a/pandoc-lua-engine/src/Text/Pandoc/Lua/Custom.hs b/pandoc-lua-engine/src/Text/Pandoc/Lua/Custom.hs
index 1fe2e0f6e..14029a1d4 100644
--- a/pandoc-lua-engine/src/Text/Pandoc/Lua/Custom.hs
+++ b/pandoc-lua-engine/src/Text/Pandoc/Lua/Custom.hs
@@ -1,7 +1,6 @@
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TypeApplications #-}
-{-# LANGUAGE TupleSections #-}
{- |
Module : Text.Pandoc.Lua.Custom
Copyright : © 2021-2023 Albert Krewinkel, John MacFarlane
@@ -16,7 +15,6 @@ import Control.Monad ((<=<), (<$!>))
import Control.Monad.IO.Class (MonadIO)
import Data.Maybe (fromMaybe)
import HsLua as Lua hiding (Operation (Div))
-import HsLua.Core.Run (GCManagedState, newGCManagedState, withGCManagedState)
import Text.Pandoc.Class (PandocMonad, findFileWithDataFallback)
import Text.Pandoc.Error (PandocError)
import Text.Pandoc.Lua.Global (Global (..), setGlobals)
@@ -40,7 +38,7 @@ loadCustom luaFile = do
either throw pure <=< runLuaWith luaState $ do
let globals = [ PANDOC_SCRIPT_FILE luaFile ]
setGlobals globals
- dofileTrace luaFile' >>= \case
+ dofileTrace (Just luaFile') >>= \case
OK -> pure ()
_ -> throwErrorAsException
diff --git a/pandoc-lua-engine/src/Text/Pandoc/Lua/Filter.hs b/pandoc-lua-engine/src/Text/Pandoc/Lua/Filter.hs
index e1fe19690..ff22626a6 100644
--- a/pandoc-lua-engine/src/Text/Pandoc/Lua/Filter.hs
+++ b/pandoc-lua-engine/src/Text/Pandoc/Lua/Filter.hs
@@ -34,7 +34,7 @@ import Text.Pandoc.Error (PandocError (PandocFilterError, PandocLuaError))
runFilterFile :: FilePath -> Pandoc -> LuaE PandocError Pandoc
runFilterFile filterPath doc = do
oldtop <- gettop
- stat <- dofileTrace filterPath
+ stat <- dofileTrace (Just filterPath)
if stat /= Lua.OK
then throwErrorAsException
else do
diff --git a/pandoc-lua-engine/src/Text/Pandoc/Lua/Init.hs b/pandoc-lua-engine/src/Text/Pandoc/Lua/Init.hs
index 5d7c87704..aa501fbaf 100644
--- a/pandoc-lua-engine/src/Text/Pandoc/Lua/Init.hs
+++ b/pandoc-lua-engine/src/Text/Pandoc/Lua/Init.hs
@@ -22,7 +22,6 @@ import Control.Monad.Catch (throwM, try)
import Control.Monad.Trans (MonadIO (..))
import Data.Maybe (catMaybes)
import HsLua as Lua hiding (status, try)
-import HsLua.Core.Run as Lua
import Text.Pandoc.Class (PandocMonad (..))
import Text.Pandoc.Data (readDataFile)
import Text.Pandoc.Error (PandocError (PandocLuaError))
diff --git a/pandoc-lua-engine/src/Text/Pandoc/Lua/Module/CLI.hs b/pandoc-lua-engine/src/Text/Pandoc/Lua/Module/CLI.hs
index 6277efdd9..533482d6b 100644
--- a/pandoc-lua-engine/src/Text/Pandoc/Lua/Module/CLI.hs
+++ b/pandoc-lua-engine/src/Text/Pandoc/Lua/Module/CLI.hs
@@ -31,6 +31,7 @@ documentedModule = Module
, moduleFields =
[ Field
{ fieldName = "default_options"
+ , fieldType = "table"
, fieldDescription = "Default CLI options, using a JSON-like " <>
"representation."
, fieldPushValue = pushViaJSON defaultOpts
@@ -50,6 +51,7 @@ documentedModule = Module
]
]
, moduleOperations = []
+ , moduleTypeInitializers = []
}
where
peekArgs idx =
diff --git a/pandoc-lua-engine/src/Text/Pandoc/Lua/Module/Format.hs b/pandoc-lua-engine/src/Text/Pandoc/Lua/Module/Format.hs
index 63753532a..2bc9910cd 100644
--- a/pandoc-lua-engine/src/Text/Pandoc/Lua/Module/Format.hs
+++ b/pandoc-lua-engine/src/Text/Pandoc/Lua/Module/Format.hs
@@ -30,6 +30,7 @@ documentedModule = Module
, moduleFields = []
, moduleOperations = []
, moduleFunctions = functions
+ , moduleTypeInitializers = []
}
-- | Extension module functions.
diff --git a/pandoc-lua-engine/src/Text/Pandoc/Lua/Module/JSON.hs b/pandoc-lua-engine/src/Text/Pandoc/Lua/Module/JSON.hs
index 00cf9a100..a21635329 100644
--- a/pandoc-lua-engine/src/Text/Pandoc/Lua/Module/JSON.hs
+++ b/pandoc-lua-engine/src/Text/Pandoc/Lua/Module/JSON.hs
@@ -42,6 +42,7 @@ documentedModule = Module
, moduleFields = fields
, moduleFunctions = functions
, moduleOperations = []
+ , moduleTypeInitializers = []
}
--
@@ -58,6 +59,7 @@ fields =
null :: LuaError e => Field e
null = Field
{ fieldName = "null"
+ , fieldType = "userdata"
, fieldDescription = "Value used to represent the `null` JSON value."
, fieldPushValue = pushValue Aeson.Null
}
diff --git a/pandoc-lua-engine/src/Text/Pandoc/Lua/Module/MediaBag.hs b/pandoc-lua-engine/src/Text/Pandoc/Lua/Module/MediaBag.hs
index 199f965d7..3de86cc99 100644
--- a/pandoc-lua-engine/src/Text/Pandoc/Lua/Module/MediaBag.hs
+++ b/pandoc-lua-engine/src/Text/Pandoc/Lua/Module/MediaBag.hs
@@ -53,6 +53,7 @@ documentedModule = Module
, write
]
, moduleOperations = []
+ , moduleTypeInitializers = []
}
-- | Delete a single item from the media bag.
diff --git a/pandoc-lua-engine/src/Text/Pandoc/Lua/Module/Pandoc.hs b/pandoc-lua-engine/src/Text/Pandoc/Lua/Module/Pandoc.hs
index e921a67d0..37d78bb83 100644
--- a/pandoc-lua-engine/src/Text/Pandoc/Lua/Module/Pandoc.hs
+++ b/pandoc-lua-engine/src/Text/Pandoc/Lua/Module/Pandoc.hs
@@ -74,12 +74,18 @@ documentedModule = Module
, inlineConstructors
, metaValueConstructors
]
+ , moduleTypeInitializers =
+ [ initType typePandoc
+ , initType typeBlock
+ , initType typeInline
+ ]
}
-- | Set of input formats accepted by @read@.
readersField :: Field PandocError
readersField = Field
{ fieldName = "readers"
+ , fieldType = "table"
, fieldDescription = T.unlines
[ "Set of formats that pandoc can parse. All keys in this table can"
, "be used as the `format` value in `pandoc.read`."
@@ -92,6 +98,7 @@ readersField = Field
writersField :: Field PandocError
writersField = Field
{ fieldName = "writers"
+ , fieldType = "table"
, fieldDescription = T.unlines
[ "Set of formats that pandoc can generate. All keys in this table"
, "can be used as the `format` value in `pandoc.write`."
@@ -104,6 +111,7 @@ writersField = Field
inlineField :: Field PandocError
inlineField = Field
{ fieldName = "Inline"
+ , fieldType = "table"
, fieldDescription = "Inline constructors, nested under 'constructors'."
-- the nesting happens for historical reasons and should probably be
-- changed.
@@ -114,6 +122,7 @@ inlineField = Field
blockField :: Field PandocError
blockField = Field
{ fieldName = "Block"
+ , fieldType = "table"
, fieldDescription = "Inline constructors, nested under 'constructors'."
-- the nesting happens for historical reasons and should probably be
-- changed.
@@ -176,6 +185,7 @@ stringConstants =
]
toField s = Field
{ fieldName = T.pack s
+ , fieldType = "string"
, fieldDescription = T.pack s
, fieldPushValue = pushString s
}
diff --git a/pandoc-lua-engine/src/Text/Pandoc/Lua/Module/Scaffolding.hs b/pandoc-lua-engine/src/Text/Pandoc/Lua/Module/Scaffolding.hs
index f90c5d761..81ff13e39 100644
--- a/pandoc-lua-engine/src/Text/Pandoc/Lua/Module/Scaffolding.hs
+++ b/pandoc-lua-engine/src/Text/Pandoc/Lua/Module/Scaffolding.hs
@@ -26,12 +26,14 @@ documentedModule = Module
, moduleFields = [writerScaffolding]
, moduleOperations = []
, moduleFunctions = []
+ , moduleTypeInitializers = []
}
-- | Template module functions.
writerScaffolding :: Field PandocError
writerScaffolding = Field
{ fieldName = "Writer"
+ , fieldType = "table"
, fieldDescription = T.unlines
[ "An object to be used as a `Writer` function; the construct handles"
, "most of the boilerplate, expecting only render functions for all"
diff --git a/pandoc-lua-engine/src/Text/Pandoc/Lua/Module/Structure.hs b/pandoc-lua-engine/src/Text/Pandoc/Lua/Module/Structure.hs
index 21248c724..d8894e103 100644
--- a/pandoc-lua-engine/src/Text/Pandoc/Lua/Module/Structure.hs
+++ b/pandoc-lua-engine/src/Text/Pandoc/Lua/Module/Structure.hs
@@ -51,6 +51,7 @@ documentedModule = Module
, table_of_contents
]
, moduleOperations = []
+ , moduleTypeInitializers = []
}
make_sections :: LuaError e => DocumentedFunction e
diff --git a/pandoc-lua-engine/src/Text/Pandoc/Lua/Module/System.hs b/pandoc-lua-engine/src/Text/Pandoc/Lua/Module/System.hs
index 61ab949a8..1d685e13e 100644
--- a/pandoc-lua-engine/src/Text/Pandoc/Lua/Module/System.hs
+++ b/pandoc-lua-engine/src/Text/Pandoc/Lua/Module/System.hs
@@ -41,4 +41,5 @@ documentedModule = Module
, setName "with_working_directory" with_wd
]
, moduleOperations = []
+ , moduleTypeInitializers = []
}
diff --git a/pandoc-lua-engine/src/Text/Pandoc/Lua/Module/Template.hs b/pandoc-lua-engine/src/Text/Pandoc/Lua/Module/Template.hs
index 652588947..87d9cebb5 100644
--- a/pandoc-lua-engine/src/Text/Pandoc/Lua/Module/Template.hs
+++ b/pandoc-lua-engine/src/Text/Pandoc/Lua/Module/Template.hs
@@ -16,7 +16,7 @@ import HsLua.Module.DocLayout (peekDoc, pushDoc)
import Text.Pandoc.Error (PandocError)
import Text.Pandoc.Lua.Marshal.AST (peekMeta, pushBlocks, pushInlines)
import Text.Pandoc.Lua.Marshal.Context (peekContext, pushContext)
-import Text.Pandoc.Lua.Marshal.Template (peekTemplate, pushTemplate)
+import Text.Pandoc.Lua.Marshal.Template (typeTemplate, peekTemplate, pushTemplate)
import Text.Pandoc.Lua.PandocLua (PandocLua (unPandocLua), liftPandocLua)
import Text.Pandoc.Writers.Shared (metaToContext')
import Text.Pandoc.Templates
@@ -35,6 +35,7 @@ documentedModule = Module
, moduleFields = []
, moduleOperations = []
, moduleFunctions = functions
+ , moduleTypeInitializers = [initType typeTemplate]
}
-- | Template module functions.
diff --git a/pandoc-lua-engine/src/Text/Pandoc/Lua/Module/Types.hs b/pandoc-lua-engine/src/Text/Pandoc/Lua/Module/Types.hs
index 32630ba71..4f656ff3f 100644
--- a/pandoc-lua-engine/src/Text/Pandoc/Lua/Module/Types.hs
+++ b/pandoc-lua-engine/src/Text/Pandoc/Lua/Module/Types.hs
@@ -39,4 +39,5 @@ documentedModule = Module
=#> functionResult pushVersion "Version" "A new Version object."
]
, moduleOperations = []
+ , moduleTypeInitializers = []
}
diff --git a/pandoc-lua-engine/src/Text/Pandoc/Lua/Module/Utils.hs b/pandoc-lua-engine/src/Text/Pandoc/Lua/Module/Utils.hs
index 513b5274e..74e3cc4ec 100644
--- a/pandoc-lua-engine/src/Text/Pandoc/Lua/Module/Utils.hs
+++ b/pandoc-lua-engine/src/Text/Pandoc/Lua/Module/Utils.hs
@@ -49,6 +49,7 @@ documentedModule = Module
, moduleDescription = "pandoc utility functions"
, moduleFields = []
, moduleOperations = []
+ , moduleTypeInitializers = []
, moduleFunctions =
[ defun "blocks_to_inlines"
### (\blks mSep -> do