From 976aa4fbee8a070f362cab6f6ec84e9251a90cf9 Mon Sep 17 00:00:00 2001 From: William Boman Date: Fri, 8 Jul 2022 18:34:38 +0200 Subject: refactor: add mason-schemas and mason-core modules (#29) * refactor: add mason-schemas and move generated filetype map to mason-lspconfig * refactor: add mason-core module --- lua/mason-core/functional/table.lua | 45 +++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 lua/mason-core/functional/table.lua (limited to 'lua/mason-core/functional/table.lua') diff --git a/lua/mason-core/functional/table.lua b/lua/mason-core/functional/table.lua new file mode 100644 index 00000000..65d05cc8 --- /dev/null +++ b/lua/mason-core/functional/table.lua @@ -0,0 +1,45 @@ +local fun = require "mason-core.functional.function" + +local _ = {} + +---@param index any +---@param tbl table +_.prop = fun.curryN(function(index, tbl) + return tbl[index] +end, 2) + +---@param keys any[] +---@param tbl table +_.pick = fun.curryN(function(keys, tbl) + local ret = {} + for _, key in ipairs(keys) do + ret[key] = tbl[key] + end + return ret +end, 2) + +_.keys = fun.curryN(vim.tbl_keys, 1) +_.size = fun.curryN(vim.tbl_count, 1) + +---@param tbl table +---@return any[][] +_.to_pairs = fun.curryN(function(tbl) + local result = {} + for k, v in pairs(tbl) do + result[#result + 1] = { k, v } + end + return result +end, 1) + +---@generic K, V +---@param tbl table +---@return table +_.invert = fun.curryN(function(tbl) + local result = {} + for k, v in pairs(tbl) do + result[v] = k + end + return result +end, 1) + +return _ -- cgit v1.2.3-70-g09d2