Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce porta
mattis neque, quis molestie nunc faucibus vitae. Phasellus vel commodo
dolor, at faucibus arcu. Curabitur sit amet magna a neque euismod
feugiat non et diam. Aliquam sit amet libero enim. Integer dignissim
ullamcorper felis, ac ultrices turpis congue vel. Nulla id tempus orci.
Curabitur ac vulputate tellus. Integer fermentum tempor facilisis. Duis
egestas luctus tristique. Maecenas vitae arcu sit amet justo feugiat
imperdiet. Nunc luctus erat sed ligula convallis hendrerit.
#!/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
local function words(s)
    local res = {}
    for part in s:gmatch("[^,]+") do                -- split by commas
        local trimmed = part:match("^%s*(.-)%s*$")  -- remove
leading/trailing spaces
        if trimmed ~= "" then
            table.insert(res, trimmed)
        end
    end
    return res
end
local function label2Block(labels)
    local contents = ""
    for _,l in ipairs(words(labels)) do
        -- use file for now.
        local fh = io.open(l, "r")
        if not fh then
            io.stderr:write("Cannot open file: " .. l .. "\n")
            return { pandoc.Plain { pandoc.Str("[Error: cannot read file
" .. l .. "]") } }
        end
        contents = contents .. fh:read("*a")
        fh:close()
    end
    return { pandoc.Plain { pandoc.Str(contents) } }
end
function Div(e)
    local include = e.attributes["include"]
    if include then
        local blocks = label2Block(include)
        -- Replace the Div contents
        return pandoc.Div(blocks, e.attr)
    end
    return nil -- no change
end