Skip to content

Commit 19cc530

Browse files
committed
.
1 parent b5ebf1d commit 19cc530

File tree

1 file changed

+81
-0
lines changed

1 file changed

+81
-0
lines changed
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
-- Execute as `nvim --headless -c "luafile ./scripts/update-readme.lua"`
2+
local test_root = '.test-deps'
3+
for _, name in ipairs({ 'config', 'data', 'state', 'cache' }) do
4+
vim.env[('XDG_%s_HOME'):format(name:upper())] = test_root .. '/' .. name
5+
end
6+
vim.opt.runtimepath:append(os.getenv('NVIM_TS') or (test_root .. '/nvim-treesitter'))
7+
vim.opt.runtimepath:append('.')
8+
9+
local parsers = require('nvim-treesitter.parsers')
10+
local shared = require('nvim-treesitter-textobjects.shared')
11+
local sorted_parsers = {}
12+
13+
for k, v in pairs(parsers) do
14+
table.insert(sorted_parsers, { name = k, parser = v })
15+
end
16+
17+
table.sort(sorted_parsers, function(a, b)
18+
return a.name < b.name
19+
end)
20+
21+
local textobjects = {}
22+
for m in table.concat(vim.fn.readfile('CONTRIBUTING.md'), '\n'):gmatch('@[%w.]*') do
23+
table.insert(textobjects, m)
24+
end
25+
table.sort(textobjects)
26+
27+
local generated_text = ''
28+
for i, o in ipairs(textobjects) do
29+
generated_text = generated_text .. i .. '. ' .. o .. '\n'
30+
end
31+
32+
generated_text = generated_text .. '<table>\n'
33+
34+
generated_text = generated_text .. '<th>\n'
35+
for i, _ in ipairs(textobjects) do
36+
generated_text = generated_text .. '<td>' .. i .. '</td> '
37+
end
38+
generated_text = generated_text .. '</th>\n'
39+
40+
for _, v in ipairs(sorted_parsers) do
41+
local lang = (v.parser.readme_name or v.name)
42+
local found_textobjects = shared.available_textobjects(lang)
43+
44+
local none_found = true
45+
for _, o in ipairs(textobjects) do
46+
local found = vim.tbl_contains(found_textobjects, o:sub(2))
47+
if found then
48+
none_found = false
49+
break
50+
end
51+
end
52+
53+
if not none_found then
54+
generated_text = generated_text .. '<tr>\n'
55+
generated_text = generated_text .. '<td>' .. lang .. '</td>'
56+
57+
for _, o in ipairs(textobjects) do
58+
local found = vim.tbl_contains(found_textobjects, o:sub(2))
59+
local status = found and '🟩' or ''
60+
generated_text = generated_text
61+
.. '<td>'
62+
.. '<span title="'
63+
.. o
64+
.. '">'
65+
.. status
66+
.. '</span>'
67+
.. '</td> '
68+
end
69+
generated_text = generated_text .. '</tr>\n'
70+
end
71+
end
72+
generated_text = generated_text .. '</table>\n'
73+
74+
local prev_builtin_textobjects_text = table.concat(vim.fn.readfile('BUILTIN_TEXTOBJECTS.md'), '\n')
75+
vim.fn.writefile(vim.fn.split(generated_text, '\n'), 'BUILTIN_TEXTOBJECTS.md')
76+
77+
if string.find(prev_builtin_textobjects_text, generated_text, 1, true) then
78+
print('BUILTIN_TEXTOBJECTS.md is up-to-date\n')
79+
else
80+
print('New BUILTIN_TEXTOBJECTS.md was written\n')
81+
end

0 commit comments

Comments
 (0)