Spaces:
Running
Running
| -- 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 |