47 lines
1.2 KiB
Lua
47 lines
1.2 KiB
Lua
local stringify = (require("pandoc.utils")).stringify
|
|
-- idea aken from https://forum.obsidian.md/t/rendering-callouts-similarly-in-pandoc/40020/6 and modified to work with Quarto 1.3
|
|
|
|
local function has_value(tab, val)
|
|
for index, value in ipairs(tab) do
|
|
if value == val then
|
|
return true
|
|
end
|
|
end
|
|
|
|
return false
|
|
end
|
|
|
|
function BlockQuote(el)
|
|
local start = el.content[1]
|
|
|
|
if start.t == "Para" and start.content[1].t == "Str" and start.content[1].text:match("^%[!%w+%][-+]?$") then
|
|
local firstline = stringify(start.content[1])
|
|
local _, _, ctype = firstline:find("%[!(%w+)%]")
|
|
local titlevar = stringify(start.content):match("^%[!%w+%](.-)$")
|
|
if ctype:lower() == "info" then
|
|
ctype = "note"
|
|
end
|
|
if ctype:lower() == "question" then
|
|
ctype = "warning"
|
|
end
|
|
if ctype:lower() == "success" then
|
|
ctype = "tip"
|
|
end
|
|
|
|
if not has_value({ "note", "warning", "important", "tip", "caution" }, ctype:lower()) then
|
|
print(ctype + " is no valid quarto-callout. Change or add special case to lua-script.\nForced to 'note'")
|
|
ctype = "note"
|
|
end
|
|
|
|
el.content:remove(1)
|
|
-- Create Quarto callout
|
|
return quarto.Callout({
|
|
type = ctype:lower(),
|
|
title = titlevar,
|
|
content = el.content,
|
|
})
|
|
else
|
|
return el
|
|
end
|
|
end
|