Here’s the pandoc README:
#!/usr/bin/env runhaskell
-- filter.hs
import Text.Pandoc.JSON
import qualified Data.Text.IO as TIO
import qualified Data.Text as T
file2Block :: FilePath -> IO [Block]
file2Block f = do
contents <- TIO.readFile f
return [Plain [Str contents]]
doInclude :: Block -> IO Block
doInclude cb@(Div (id, classes, namevals) contents) =
case lookup (T.pack "include") namevals of
Just f -> Div (id, classes, namevals) <$>
file2Block (T.unpack f)
Nothing -> return cb
doInclude x = return x
main :: IO ()
main = toJSONFilter doInclude