Spaces:
Running
Running
File size: 1,585 Bytes
fd5f45b |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
-- defining all possible callout types
local callouts_all = {
caution = 'callout-caution',
important = 'callout-important',
tip = 'callout-tip',
note = 'callout-note',
warning = 'callout-warning'
}
-- function for adding collapse attributes to callout divs
function collapse_callout(callouts, bool)
local callout_filter = {
Div = function(el)
for key, val in pairs(callouts) do
if el.classes:includes(val) then
if el.attributes["collapse"] == nil then
el.attributes["collapse"] = bool
return el
end
end
end
end
}
return callout_filter
end
-- make changes to input file if the format is html
if quarto.doc.isFormat("html:js") then
function Pandoc (doc)
local collapse = doc.meta['collapse-callout']
if not collapse then
return nil
end
if collapse.all == false then
return doc:walk(collapse_callout(callouts_all,'false'))
elseif collapse.all == true then
return doc:walk(collapse_callout(callouts_all, 'true'))
else
filtered_doc = doc
for k, v in pairs{"caution", "important", "tip", "note", "warning"} do
if collapse[v] == true then
filtered_doc = filtered_doc:walk(
collapse_callout({callouts_all[v]}, 'true')
)
elseif collapse[v] == false then
filtered_doc = filtered_doc:walk(
collapse_callout({callouts_all[v]}, 'false')
)
end
end
return filtered_doc
end
return nil
end
end |