aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlbert Krewinkel <[email protected]>2022-07-12 20:14:42 +0200
committerGitHub <[email protected]>2022-07-12 20:14:42 +0200
commit12cc140272a0f2752584428ab765fb6410f29b92 (patch)
treef58a2fbd95e5b4c42377b70fa56ca150d36d9ff3 /src
parentc7f5fd240003252fc9cd647015d33ba559ad81e9 (diff)
Lua: add fields `pandoc.readers` and `pandoc.writers`. (#8177)
The set of supported input and output formats is made available to Lua users.
Diffstat (limited to 'src')
-rw-r--r--src/Text/Pandoc/Lua/Module/Pandoc.hs32
1 files changed, 29 insertions, 3 deletions
diff --git a/src/Text/Pandoc/Lua/Module/Pandoc.hs b/src/Text/Pandoc/Lua/Module/Pandoc.hs
index 3dacc48de..e708f4345 100644
--- a/src/Text/Pandoc/Lua/Module/Pandoc.hs
+++ b/src/Text/Pandoc/Lua/Module/Pandoc.hs
@@ -43,13 +43,14 @@ import Text.Pandoc.Lua.PandocLua (PandocLua (unPandocLua), liftPandocLua)
import Text.Pandoc.Options ( ReaderOptions (readerExtensions)
, WriterOptions (writerExtensions) )
import Text.Pandoc.Process (pipeProcess)
-import Text.Pandoc.Readers (Reader (..), getReader)
+import Text.Pandoc.Readers (Reader (..), getReader, readers)
import Text.Pandoc.Sources (toSources)
-import Text.Pandoc.Writers (Writer (..), getWriter)
+import Text.Pandoc.Writers (Writer (..), getWriter, writers)
import qualified HsLua as Lua
import qualified Data.ByteString.Lazy as BL
import qualified Data.ByteString.Lazy.Char8 as BSL
+import qualified Data.Set as Set
import qualified Data.Text as T
import qualified Text.Pandoc.UTF8 as UTF8
@@ -68,7 +69,8 @@ documentedModule = Module
, "document elements, functions to parse text in a given"
, "format, and functions to filter and modify a subtree."
]
- , moduleFields = stringConstants ++ [inlineField, blockField]
+ , moduleFields = readersField : writersField :
+ stringConstants ++ [inlineField, blockField]
, moduleOperations = []
, moduleFunctions = mconcat
[ functions
@@ -79,6 +81,30 @@ documentedModule = Module
]
}
+-- | Set of input formats accepted by @read@.
+readersField :: Field PandocError
+readersField = Field
+ { fieldName = "readers"
+ , 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`."
+ ]
+ , fieldPushValue = pushSet pushText $
+ Set.fromList (map fst (readers @PandocLua))
+ }
+
+-- | Set of input formats accepted by @write@.
+writersField :: Field PandocError
+writersField = Field
+ { fieldName = "writers"
+ , 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`."
+ ]
+ , fieldPushValue = pushSet pushText $
+ Set.fromList (map fst (writers @PandocLua))
+ }
+
-- | Inline table field
inlineField :: Field PandocError
inlineField = Field