diff options
Diffstat (limited to 'nvim/lua/shared.lua')
| -rw-r--r-- | nvim/lua/shared.lua | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/nvim/lua/shared.lua b/nvim/lua/shared.lua index 907159e..a1cf289 100644 --- a/nvim/lua/shared.lua +++ b/nvim/lua/shared.lua @@ -100,4 +100,50 @@ function M.vert_shift_selection(amount) vim.cmd("normal! gv") end +--- Build a set from a list +--- @generic T +--- @param list T[] +--- @return table<T, boolean> +function M.to_set(list) + --- @type table<T, boolean> + local set = {} + + for _, v in ipairs(list) do + set[v] = true + end + + return set +end + +--- Computes A \ B +--- @generic T +--- @param A table<T, boolean> +--- @param B table<T, boolean> +--- @return table<T, boolean> +function M.set_difference(A, B) + --- @type table<T, boolean> + local diff = {} + + for k, v in pairs(A) do + if v and not B[k] then + diff[k] = true + end + end + + return diff +end + +--- Get keys of table +--- @generic T +--- @param tbl table<T, any> +--- @return T[] +function M.keys(tbl) + local keys = {} + for k, _ in pairs(tbl) do + table.insert(keys, k) + end + + return keys +end + return M |
