diff options
| -rw-r--r-- | MANUAL.txt | 6 | ||||
| -rw-r--r-- | data/reader.lua | 2 | ||||
| -rw-r--r-- | 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" | 
