local read = pandoc.read assert(#arg == 1, "\n" .. "[ERROR] usage: pandoc lua collect_all.lua ") local visited = {} local function collect (fp) local f = assert(io.open(fp), "\n" .. "[ERROR] could not open " .. fp .. " for reading.") visited[fp] = true io.write(fp .. "\n") local data = f:read("a") f:close() read(data):walk({ Link = function (link) local f = io.open(link.target) if f == nil then return else f:close() end if visited[link.target] then return end visited[link.target] = true collect(link.target) end }) end collect(arg[1])