aboutsummaryrefslogtreecommitdiff
path: root/src/Text/Pandoc/Readers/Custom.hs
diff options
context:
space:
mode:
authorAlbert Krewinkel <albert@zeitkraut.de>2021-12-08 19:06:48 +0100
committerJohn MacFarlane <jgm@berkeley.edu>2021-12-11 08:59:11 -0800
commit83b5b79c0e4f073198b5af11b9e8a0a4471fcd41 (patch)
tree699ea018e8fe1ef4aa47c49abb2c4708caf2c641 /src/Text/Pandoc/Readers/Custom.hs
parentbfb3118ebb1f24d8b12a806ef0ade14d5c4575ce (diff)
downloadpandoc-83b5b79c0e4f073198b5af11b9e8a0a4471fcd41.tar.gz
Custom reader: pass list of sources instead of concatenated text
The first argument passed to Lua `Reader` functions is no longer a plain string but a richer data structure. The structure can easily be converted to a string by applying `tostring`, but is also a list with elements that contain each the *text* and *name* of each input source as a property of the respective name. A small example is added to the custom reader documentation, showcasing its use in a reader that creates a syntax-highlighted code block for each source code file passed as input. Existing readers must be updated.
Diffstat (limited to 'src/Text/Pandoc/Readers/Custom.hs')
-rw-r--r--src/Text/Pandoc/Readers/Custom.hs10
1 files changed, 4 insertions, 6 deletions
diff --git a/src/Text/Pandoc/Readers/Custom.hs b/src/Text/Pandoc/Readers/Custom.hs
index d7336012b..7b6c99ed8 100644
--- a/src/Text/Pandoc/Readers/Custom.hs
+++ b/src/Text/Pandoc/Readers/Custom.hs
@@ -17,7 +17,6 @@ Supports custom parsers written in Lua which produce a Pandoc AST.
module Text.Pandoc.Readers.Custom ( readCustom ) where
import Control.Exception
import Control.Monad (when)
-import Data.Text (Text)
import HsLua as Lua hiding (Operation (Div), render)
import HsLua.Class.Peekable (PeekError)
import Control.Monad.IO.Class (MonadIO)
@@ -26,13 +25,13 @@ import Text.Pandoc.Lua (Global (..), runLua, setGlobals)
import Text.Pandoc.Lua.Util (dofileWithTraceback)
import Text.Pandoc.Options
import Text.Pandoc.Class (PandocMonad)
-import Text.Pandoc.Sources (ToSources(..), sourcesToText)
+import Text.Pandoc.Sources (Sources, ToSources(..))
-- | Convert custom markup to Pandoc.
readCustom :: (PandocMonad m, MonadIO m, ToSources s)
=> FilePath -> ReaderOptions -> s -> m Pandoc
-readCustom luaFile opts sources = do
- let input = sourcesToText $ toSources sources
+readCustom luaFile opts srcs = do
+ let input = toSources srcs
let globals = [ PANDOC_SCRIPT_FILE luaFile ]
res <- runLua $ do
setGlobals globals
@@ -47,8 +46,7 @@ readCustom luaFile opts sources = do
Right doc -> return doc
parseCustom :: forall e. PeekError e
- => Text
+ => Sources
-> ReaderOptions
-> LuaE e Pandoc
parseCustom = invoke @e "Reader"
-