aboutsummaryrefslogtreecommitdiff
path: root/pandoc-lua-engine
diff options
context:
space:
mode:
authorAlbert Krewinkel <[email protected]>2025-07-23 18:57:21 +0200
committerAlbert Krewinkel <[email protected]>2025-07-23 19:31:03 +0200
commit01a305af58b2b91179266e3463e07db94fcc11f0 (patch)
tree5dbf33ad51cf1864709152bdc526e3d129a718b1 /pandoc-lua-engine
parentb6837264478b264d9883097856fb68047e2ccb8f (diff)
Lua: add function `pandoc.path.exists`.
The functions allows to check the existence of file-system objects.
Diffstat (limited to 'pandoc-lua-engine')
-rw-r--r--pandoc-lua-engine/pandoc-lua-engine.cabal3
-rw-r--r--pandoc-lua-engine/src/Text/Pandoc/Lua/Module.hs5
-rw-r--r--pandoc-lua-engine/src/Text/Pandoc/Lua/Module/Path.hs50
3 files changed, 54 insertions, 4 deletions
diff --git a/pandoc-lua-engine/pandoc-lua-engine.cabal b/pandoc-lua-engine/pandoc-lua-engine.cabal
index 5cd6c570b..59b9140d0 100644
--- a/pandoc-lua-engine/pandoc-lua-engine.cabal
+++ b/pandoc-lua-engine/pandoc-lua-engine.cabal
@@ -93,6 +93,7 @@ library
, Text.Pandoc.Lua.Module.Log
, Text.Pandoc.Lua.Module.MediaBag
, Text.Pandoc.Lua.Module.Pandoc
+ , Text.Pandoc.Lua.Module.Path
, Text.Pandoc.Lua.Module.Scaffolding
, Text.Pandoc.Lua.Module.Structure
, Text.Pandoc.Lua.Module.System
@@ -119,7 +120,7 @@ library
, hslua >= 2.3 && < 2.5
, hslua-module-doclayout>= 1.2 && < 1.3
, hslua-module-path >= 1.1 && < 1.2
- , hslua-module-system >= 1.2 && < 1.3
+ , hslua-module-system >= 1.2.1 && < 1.3
, hslua-module-text >= 1.1 && < 1.2
, hslua-module-version >= 1.1 && < 1.2
, hslua-module-zip >= 1.1.3 && < 1.2
diff --git a/pandoc-lua-engine/src/Text/Pandoc/Lua/Module.hs b/pandoc-lua-engine/src/Text/Pandoc/Lua/Module.hs
index 5d2e1040a..9966c4a45 100644
--- a/pandoc-lua-engine/src/Text/Pandoc/Lua/Module.hs
+++ b/pandoc-lua-engine/src/Text/Pandoc/Lua/Module.hs
@@ -23,7 +23,6 @@ import qualified Data.ByteString.Char8 as Char8
import qualified Lua.LPeg as LPeg
import qualified HsLua.Aeson
import qualified HsLua.Module.DocLayout as Module.Layout
-import qualified HsLua.Module.Path as Module.Path
import qualified HsLua.Module.Zip as Module.Zip
import qualified Text.Pandoc.Lua.Module.CLI as Pandoc.CLI
import qualified Text.Pandoc.Lua.Module.Format as Pandoc.Format
@@ -32,6 +31,7 @@ import qualified Text.Pandoc.Lua.Module.JSON as Pandoc.JSON
import qualified Text.Pandoc.Lua.Module.Log as Pandoc.Log
import qualified Text.Pandoc.Lua.Module.MediaBag as Pandoc.MediaBag
import qualified Text.Pandoc.Lua.Module.Pandoc as Module.Pandoc
+import qualified Text.Pandoc.Lua.Module.Path as Pandoc.Path
import qualified Text.Pandoc.Lua.Module.Scaffolding as Pandoc.Scaffolding
import qualified Text.Pandoc.Lua.Module.Structure as Pandoc.Structure
import qualified Text.Pandoc.Lua.Module.System as Pandoc.System
@@ -84,6 +84,7 @@ submodules =
, Pandoc.JSON.documentedModule
, Pandoc.Log.documentedModule
, Pandoc.MediaBag.documentedModule
+ , Pandoc.Path.documentedModule
, Pandoc.Scaffolding.documentedModule
, Pandoc.Structure.documentedModule
, Pandoc.System.documentedModule
@@ -95,8 +96,6 @@ submodules =
`allSince` [2,18])
`functionsSince` ["bold", "italic", "underlined", "strikeout", "fg", "bg"])
[3, 4, 1]
- , Module.Path.documentedModule { moduleName = "pandoc.path" }
- `allSince` [2,12]
, Module.Zip.documentedModule { moduleName = "pandoc.zip" }
`allSince` [3,0]
]
diff --git a/pandoc-lua-engine/src/Text/Pandoc/Lua/Module/Path.hs b/pandoc-lua-engine/src/Text/Pandoc/Lua/Module/Path.hs
new file mode 100644
index 000000000..1d2169976
--- /dev/null
+++ b/pandoc-lua-engine/src/Text/Pandoc/Lua/Module/Path.hs
@@ -0,0 +1,50 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE TypeApplications #-}
+{- |
+ Module : Text.Pandoc.Lua.Module.Path
+ Copyright : © 2019-2024 Albert Krewinkel
+ License : GNU GPL, version 2 or above
+
+ Maintainer : Albert Krewinkel <[email protected]>
+ Stability : alpha
+
+Pandoc's system Lua module.
+-}
+module Text.Pandoc.Lua.Module.Path
+ ( documentedModule
+ ) where
+
+import Data.Version (makeVersion)
+import HsLua
+import qualified HsLua.Module.Path as MPath
+import qualified HsLua.Module.System as MSystem
+
+-- | Push the pandoc.system module on the Lua stack.
+documentedModule :: forall e. LuaError e => Module e
+documentedModule = Module
+ { moduleName = "pandoc.path"
+ , moduleDescription = moduleDescription @e MPath.documentedModule
+ , moduleFields =
+ [ MPath.separator
+ , MPath.search_path_separator
+ ]
+ , moduleFunctions =
+ [ MPath.directory `since` v[2,12]
+ , MSystem.exists `since` v[3,7,1]
+ , MPath.filename `since` v[2,12]
+ , MPath.is_absolute `since` v[2,12]
+ , MPath.is_relative `since` v[2,12]
+ , MPath.join `since` v[2,12]
+ , MPath.make_relative `since` v[2,12]
+ , MPath.normalize `since` v[2,12]
+ , MPath.split `since` v[2,12]
+ , MPath.split_extension `since` v[2,12]
+ , MPath.split_search_path `since` v[2,12]
+ , MPath.treat_strings_as_paths `since` v[2,12]
+ ]
+ , moduleOperations = []
+ , moduleTypeInitializers = []
+ }
+ where
+ v = makeVersion