-- this extension covnerts links, tables of contents and other dynamic content in the ODT format to plain text
local filter = require "make4ht-domfilter"
-- this extension only works for the ODT format
M.test = function(format)
return format=="odt"
end
local function nodynamiccontent(dom)
for _,link in ipairs(dom:query_selector("text|a")) do
-- change links to spans
link._name = "text:span"
-- remove attributes
link._attr = {}
end
for _, bibliography in ipairs(dom:query_selector("text|bibliography")) do
-- remove links from bibliography
-- use div instead of bibliography
bibliography._name = "text:div"
-- remove bibliography-source elements
for _, source in ipairs(bibliography:query_selector("text:bibliography-source")) do
source:remove_node()
end
for _, index in ipairs(bibliography:query_selector("text|index-body")) do
-- use div instead of bibliography-entry
index._name = "text:div"
end
end
for _, toc in ipairs(dom:query_selector("text|table-of-content")) do
-- remove links from toc
-- use div instead of table-of-contents
toc._name = "text:div"
for _, entry in ipairs(toc:query_selector("text|index-body, text|index-title")) do
-- use div instead of table-of-contents-entry
entry._name = "text:div"
end
end
return dom
end
M.modify_build = function(make)
local process = filter({nodynamiccontent}, "nodynamiccontent")
Make:match("4oo$",process)
return make
end