diff options
| author | Albert Krewinkel <[email protected]> | 2022-10-04 17:30:12 +0200 |
|---|---|---|
| committer | John MacFarlane <[email protected]> | 2022-10-04 13:06:23 -0700 |
| commit | 86e009b49547e7072cf099b7990cb7ff2b864979 (patch) | |
| tree | 29b34f6931c3d174271b7788f0a37c04144a7247 /pandoc-lua-engine/src | |
| parent | a50765b3e42de0295ffcb090f77f140070b57d0a (diff) | |
Lua: add new module `pandoc.format`.
The module provides functions to query the set of extensions supported
by formats, and the set of extension enabled per default.
Diffstat (limited to 'pandoc-lua-engine/src')
| -rw-r--r-- | pandoc-lua-engine/src/Text/Pandoc/Lua/Init.hs | 6 | ||||
| -rw-r--r-- | pandoc-lua-engine/src/Text/Pandoc/Lua/Module/Format.hs | 60 |
2 files changed, 64 insertions, 2 deletions
diff --git a/pandoc-lua-engine/src/Text/Pandoc/Lua/Init.hs b/pandoc-lua-engine/src/Text/Pandoc/Lua/Init.hs index 59920879a..98a2f5c7b 100644 --- a/pandoc-lua-engine/src/Text/Pandoc/Lua/Init.hs +++ b/pandoc-lua-engine/src/Text/Pandoc/Lua/Init.hs @@ -34,8 +34,9 @@ import qualified HsLua.Aeson import qualified HsLua.Module.DocLayout as Module.Layout import qualified HsLua.Module.Path as Module.Path import qualified HsLua.Module.Text as Module.Text -import qualified Text.Pandoc.Lua.Module.Pandoc as Module.Pandoc +import qualified Text.Pandoc.Lua.Module.Format as Pandoc.Format 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.System as Pandoc.System import qualified Text.Pandoc.Lua.Module.Template as Pandoc.Template import qualified Text.Pandoc.Lua.Module.Types as Pandoc.Types @@ -77,7 +78,8 @@ runLuaNoEnv action = do -- it must be handled separately. loadedModules :: [Module PandocError] loadedModules = - [ Pandoc.MediaBag.documentedModule + [ Pandoc.Format.documentedModule + , Pandoc.MediaBag.documentedModule , Pandoc.System.documentedModule , Pandoc.Template.documentedModule , Pandoc.Types.documentedModule diff --git a/pandoc-lua-engine/src/Text/Pandoc/Lua/Module/Format.hs b/pandoc-lua-engine/src/Text/Pandoc/Lua/Module/Format.hs new file mode 100644 index 000000000..8fa0485fc --- /dev/null +++ b/pandoc-lua-engine/src/Text/Pandoc/Lua/Module/Format.hs @@ -0,0 +1,60 @@ +{-# LANGUAGE OverloadedStrings #-} +{- | + Module : Text.Pandoc.Lua.Module.Format + Copyright : © 2022 Albert Krewinkel + License : GPL-2.0-or-later + Maintainer : Albert Krewinkel <[email protected]> + +Lua module to handle pandoc templates. +-} +module Text.Pandoc.Lua.Module.Format + ( documentedModule + ) where + +import HsLua +import Text.Pandoc.Error (PandocError) +import Text.Pandoc.Extensions + ( getAllExtensions, getDefaultExtensions ) +import Text.Pandoc.Lua.ErrorConversion () +import Text.Pandoc.Lua.Marshal.Extensions (pushExtensions) + +import qualified Data.Text as T + +-- | The "pandoc.format" module. +documentedModule :: Module PandocError +documentedModule = Module + { moduleName = "pandoc.format" + , moduleDescription = T.unlines + [ "Pandoc formats and their extensions." + ] + , moduleFields = [] + , moduleOperations = [] + , moduleFunctions = functions + } + +-- | Extension module functions. +functions :: [DocumentedFunction PandocError] +functions = + [ defun "default_extensions" + ### liftPure getDefaultExtensions + <#> parameter peekText "string" "format" "format name" + =#> functionResult pushExtensions "FormatExtensions" + "default extensions enabled for `format`" + #? T.unlines + [ "Returns the list of default extensions of the given format; this" + , "function does not check if the format is supported, it will return" + , "a fallback list of extensions even for unknown formats." + ] + + , defun "all_extensions" + ### liftPure getAllExtensions + <#> parameter peekText "string" "format" "format name" + =#> functionResult pushExtensions "FormatExtensions" + "all extensions supported for `format`" + #? T.unlines + [ "Returns the list of all valid extensions for a format." + , "No distinction is made between input and output, and an" + , "extension have an effect when reading a format but not when" + , "writing it, or *vice versa*." + ] + ] |
