diff options
| author | Albert Krewinkel <[email protected]> | 2022-07-12 20:14:42 +0200 |
|---|---|---|
| committer | GitHub <[email protected]> | 2022-07-12 20:14:42 +0200 |
| commit | 12cc140272a0f2752584428ab765fb6410f29b92 (patch) | |
| tree | f58a2fbd95e5b4c42377b70fa56ca150d36d9ff3 /src | |
| parent | c7f5fd240003252fc9cd647015d33ba559ad81e9 (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.hs | 32 |
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 |
