36 lines
818 B
Lua
36 lines
818 B
Lua
-- insprired from https://github.com/pandoc/lua-filters/blob/5686d96/diagram-generator/diagram-generator.lua
|
|
|
|
local dotPath = os.getenv("DOT") or "dot"
|
|
|
|
local filetype = "svg"
|
|
local mimetype = "image/svg+xml"
|
|
|
|
local function graphviz(code, filetype)
|
|
return pandoc.pipe(dotPath, {"-T" .. filetype}, code)
|
|
end
|
|
|
|
function CodeBlock(block)
|
|
local converters = {
|
|
graphviz = graphviz,
|
|
}
|
|
|
|
local img_converter = converters[block.classes[1]]
|
|
if not img_converter then
|
|
return nil
|
|
end
|
|
|
|
local success, img = pcall(img_converter, block.text, filetype)
|
|
|
|
if not success then
|
|
io.stderr:write(tostring(img))
|
|
io.stderr:write('\n')
|
|
error 'Image conversion failed. Aborting.'
|
|
end
|
|
|
|
return pandoc.RawBlock('html', img)
|
|
end
|
|
|
|
return {
|
|
{CodeBlock = CodeBlock},
|
|
}
|