aboutsummaryrefslogtreecommitdiff
path: root/tools/update-lua-docs.lua
blob: 746dce98488236e5027eb6ba5f9a52bb489686ef (plain)
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
local in_module_section = false

-- Generate tmp folder
local tmp_folder = os.tmpname()
os.remove(tmp_folder)
os.execute("mkdir -p " .. tmp_folder)

function extend(list1, list2)
  for i = 1, #list2 do
    list1[#list1 + 1] = list2[i]
  end
end

function module_blocks(module_filenames)
  local blocks = {}
  for _, filename in pairs(module_filenames) do
    os.execute("ldoc -q -l tools -d " .. tmp_folder .. " " .. filename)
    local module_file = io.open(tmp_folder .. "/index.html")
    local module_html = module_file:read("*a")
    local module_doc = pandoc.read(module_html, "html")
    extend(blocks, module_doc.blocks)
  end
  return blocks
end

function Header (el)
  if in_module_section then
    if el.level == 1 or
       -- special case for Module pandoc
       (el.level == 2 and el.identifier == 'helper-functions') then
      in_module_section = false
      return el
    else
      return {}
    end
  elseif el.identifier == "module-pandoc" then
    in_module_section = true
    return module_blocks{'data/pandoc.lua'}
  elseif el.identifier == "module-pandoc.list" then
    in_module_section = true
    return module_blocks{'data/pandoc.List.lua'}
  end
end

function Block (el)
  if in_module_section then
    return {}
  end
end