From 213913f02554b5cec8ea946538d8ba445d4d3f4e Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Sat, 6 Nov 2021 16:45:03 -0700 Subject: Pass ReaderOptions to custom readers as second parameter. --- MANUAL.txt | 6 +++--- data/reader.lua | 2 +- src/Text/Pandoc/Readers/Custom.hs | 7 +++---- 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" -- cgit v1.2.3