diff options
| author | William Boman <william@redwill.se> | 2023-01-10 17:53:17 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-01-10 17:53:17 +0100 |
| commit | c609775d1fc5ae18aadc92b8b65be9c9b1980004 (patch) | |
| tree | f80d8b3153446cb33b9506ce34db4614dc249b53 /lua/mason-core/functional | |
| parent | chore: update generated code (#881) (diff) | |
| download | mason-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.lua | 1 | ||||
| -rw-r--r-- | lua/mason-core/functional/list.lua | 12 |
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 _ |
