aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn MacFarlane <jgm@berkeley.edu>2021-11-06 16:45:03 -0700
committerJohn MacFarlane <jgm@berkeley.edu>2021-11-06 16:47:13 -0700
commit213913f02554b5cec8ea946538d8ba445d4d3f4e (patch)
tree290ad10e1fffb9620434c0cf5c74ac6b3ad7b436
parent822f8949841f851a56bbd964433aa60205609d20 (diff)
downloadpandoc-213913f02554b5cec8ea946538d8ba445d4d3f4e.tar.gz
Pass ReaderOptions to custom readers as second parameter.
-rw-r--r--MANUAL.txt6
-rw-r--r--data/reader.lua2
-rw-r--r--src/Text/Pandoc/Readers/Custom.hs7
3 files changed, 7 insertions, 8 deletions
diff --git a/MANUAL.txt b/MANUAL.txt
index 7e9f9f85a..dc973f958 100644
--- a/MANUAL.txt
+++ b/MANUAL.txt
@@ -6596,9 +6596,9 @@ is available by default. To see a sample custom reader:
pandoc --print-default-data-file reader.lua
-Reader options are available via the global variable
-`PANDOC_READER_OPTIONS`, as expalined in the [Lua filters
-documentation].
+If you want your custom reader to have access to reader options
+(e.g. the tab stop setting), you give your Reader function a
+second `options` parameter.
A custom writer is a Lua script that defines a function
that specifies how to render each element in a Pandoc AST.
diff --git a/data/reader.lua b/data/reader.lua
index 5cc2dfc0c..e466e6ea1 100644
--- a/data/reader.lua
+++ b/data/reader.lua
@@ -82,6 +82,6 @@ G = P{ "Pandoc",
Special = S"`\\" / pandoc.Str;
}
-function Reader(input)
+function Reader(input, opts)
return lpeg.match(G, input)
end
diff --git a/src/Text/Pandoc/Readers/Custom.hs b/src/Text/Pandoc/Readers/Custom.hs
index 83d82a9cc..d7336012b 100644
--- a/src/Text/Pandoc/Readers/Custom.hs
+++ b/src/Text/Pandoc/Readers/Custom.hs
@@ -33,9 +33,7 @@ readCustom :: (PandocMonad m, MonadIO m, ToSources s)
=> FilePath -> ReaderOptions -> s -> m Pandoc
readCustom luaFile opts sources = do
let input = sourcesToText $ toSources sources
- let globals = [ PANDOC_SCRIPT_FILE luaFile
- , PANDOC_READER_OPTIONS opts
- ]
+ let globals = [ PANDOC_SCRIPT_FILE luaFile ]
res <- runLua $ do
setGlobals globals
stat <- dofileWithTraceback luaFile
@@ -43,13 +41,14 @@ readCustom luaFile opts sources = do
-- to handle this more gracefully):
when (stat /= Lua.OK)
Lua.throwErrorAsException
- parseCustom input
+ parseCustom input opts
case res of
Left msg -> throw msg
Right doc -> return doc
parseCustom :: forall e. PeekError e
=> Text
+ -> ReaderOptions
-> LuaE e Pandoc
parseCustom = invoke @e "Reader"