diff options
Diffstat (limited to 'lua')
| -rw-r--r-- | lua/mason-core/functional/init.lua | 2 | ||||
| -rw-r--r-- | lua/mason-core/functional/relation.lua | 4 | ||||
| -rw-r--r-- | lua/mason-core/functional/string.lua | 11 | ||||
| -rw-r--r-- | lua/mason-core/functional/table.lua | 23 |
4 files changed, 34 insertions, 6 deletions
diff --git a/lua/mason-core/functional/init.lua b/lua/mason-core/functional/init.lua index ee185e8b..837f9558 100644 --- a/lua/mason-core/functional/init.lua +++ b/lua/mason-core/functional/init.lua @@ -99,6 +99,7 @@ _.format = string.format _.split = string.split _.gsub = string.gsub _.trim = string.trim +_.trim_start = string.trim_start _.dedent = string.dedent _.starts_with = string.starts_with _.to_upper = string.to_upper @@ -117,6 +118,7 @@ _.invert = tbl.invert _.evolve = tbl.evolve _.merge_left = tbl.merge_left _.dissoc = tbl.dissoc +_.assoc = tbl.assoc ---@module "mason-core.functional.type" local typ = lazy_require "mason-core.functional.type" diff --git a/lua/mason-core/functional/relation.lua b/lua/mason-core/functional/relation.lua index b6ba92b7..1561b030 100644 --- a/lua/mason-core/functional/relation.lua +++ b/lua/mason-core/functional/relation.lua @@ -18,7 +18,9 @@ end, 3) ---@param path any[] ---@param tbl table _.path_satisfies = fun.curryN(function(predicate, path, tbl) - return predicate(vim.tbl_get(tbl, unpack(path))) + -- see https://github.com/neovim/neovim/pull/21426 + local value = vim.tbl_get(tbl, unpack(path)) + return predicate(value) end, 3) ---@param a number diff --git a/lua/mason-core/functional/string.lua b/lua/mason-core/functional/string.lua index 8c66dbc0..2d53a5b6 100644 --- a/lua/mason-core/functional/string.lua +++ b/lua/mason-core/functional/string.lua @@ -85,4 +85,15 @@ _.to_lower = function(str) return str:lower() end +---@param pattern string +---@param str string +_.trim_start = fun.curryN(function(pattern, str) + for i = 1, #str do + if not str:sub(i, i):match(pattern) then + return str:sub(i) + end + end + return str +end, 2) + return _ diff --git a/lua/mason-core/functional/table.lua b/lua/mason-core/functional/table.lua index 276a3180..26db162b 100644 --- a/lua/mason-core/functional/table.lua +++ b/lua/mason-core/functional/table.lua @@ -24,7 +24,9 @@ end, 2) ---@param path any[] ---@param tbl table _.path = fun.curryN(function(path, tbl) - return vim.tbl_get(tbl, unpack(path)) + -- see https://github.com/neovim/neovim/pull/21426 + local value = vim.tbl_get(tbl, unpack(path)) + return value end, 2) ---@generic T, U @@ -97,10 +99,21 @@ _.merge_left = fun.curryN(function(left, right) return vim.tbl_extend("force", right, left) end, 2) ----@generic T : table ----@param key any ----@param tbl T ----@return T +---@generic K, V +---@param key K +---@param value V +---@param tbl table<K, V> +---@return table<K, V> +_.assoc = fun.curryN(function(key, value, tbl) + local res = shallow_clone(tbl) + res[key] = value + return res +end, 3) + +---@generic K, V +---@param key K +---@param tbl table<K, V> +---@return table<K, V> _.dissoc = fun.curryN(function(key, tbl) local res = shallow_clone(tbl) res[key] = nil |
