aboutsummaryrefslogtreecommitdiffstats
path: root/lua/mason-core/functional
diff options
context:
space:
mode:
authorWilliam Boman <william@redwill.se>2023-01-10 17:53:17 +0100
committerGitHub <noreply@github.com>2023-01-10 17:53:17 +0100
commitc609775d1fc5ae18aadc92b8b65be9c9b1980004 (patch)
treef80d8b3153446cb33b9506ce34db4614dc249b53 /lua/mason-core/functional
parentchore: update generated code (#881) (diff)
downloadmason-c609775d1fc5ae18aadc92b8b65be9c9b1980004.tar
mason-c609775d1fc5ae18aadc92b8b65be9c9b1980004.tar.gz
mason-c609775d1fc5ae18aadc92b8b65be9c9b1980004.tar.bz2
mason-c609775d1fc5ae18aadc92b8b65be9c9b1980004.tar.lz
mason-c609775d1fc5ae18aadc92b8b65be9c9b1980004.tar.xz
mason-c609775d1fc5ae18aadc92b8b65be9c9b1980004.tar.zst
mason-c609775d1fc5ae18aadc92b8b65be9c9b1980004.zip
feat(functional): add list.index_by (#882)
Diffstat (limited to 'lua/mason-core/functional')
-rw-r--r--lua/mason-core/functional/init.lua1
-rw-r--r--lua/mason-core/functional/list.lua12
2 files changed, 13 insertions, 0 deletions
diff --git a/lua/mason-core/functional/init.lua b/lua/mason-core/functional/init.lua
index 9b52047c..20293bd8 100644
--- a/lua/mason-core/functional/init.lua
+++ b/lua/mason-core/functional/init.lua
@@ -63,6 +63,7 @@ _.drop = list.drop
_.drop_last = list.drop_last
_.reduce = list.reduce
_.split_every = list.split_every
+_.index_by = list.index_by
---@module "mason-core.functional.relation"
local relation = lazy_require "mason-core.functional.relation"
diff --git a/lua/mason-core/functional/list.lua b/lua/mason-core/functional/list.lua
index 275bc61a..30e134bd 100644
--- a/lua/mason-core/functional/list.lua
+++ b/lua/mason-core/functional/list.lua
@@ -284,4 +284,16 @@ _.split_every = fun.curryN(function(n, list)
return res
end, 2)
+---@generic T, U
+---@param index fun(item: T): U
+---@param list T[]
+---@return table<U, T>
+_.index_by = fun.curryN(function(index, list)
+ local res = {}
+ for _, item in ipairs(list) do
+ res[index(item)] = item
+ end
+ return res
+end, 2)
+
return _