diff options
Diffstat (limited to 'lua')
| -rw-r--r-- | lua/nvim-lsp-installer/core/functional/init.lua | 2 | ||||
| -rw-r--r-- | lua/nvim-lsp-installer/core/functional/list.lua | 10 | ||||
| -rw-r--r-- | lua/nvim-lsp-installer/core/functional/logic.lua | 7 |
3 files changed, 19 insertions, 0 deletions
diff --git a/lua/nvim-lsp-installer/core/functional/init.lua b/lua/nvim-lsp-installer/core/functional/init.lua index 45a09ea6..9337ccef 100644 --- a/lua/nvim-lsp-installer/core/functional/init.lua +++ b/lua/nvim-lsp-installer/core/functional/init.lua @@ -28,6 +28,7 @@ _.any = list.any _.filter = list.filter _.map = list.map _.each = list.each +_.concat = list.concat -- relation local relation = require "nvim-lsp-installer.core.functional.relation" @@ -40,6 +41,7 @@ local logic = require "nvim-lsp-installer.core.functional.logic" _.all_pass = logic.all_pass _.if_else = logic.if_else _.is_not = logic.is_not +_.complement = logic.complement _.cond = logic.cond -- number diff --git a/lua/nvim-lsp-installer/core/functional/list.lua b/lua/nvim-lsp-installer/core/functional/list.lua index 666de4d3..11742f1c 100644 --- a/lua/nvim-lsp-installer/core/functional/list.lua +++ b/lua/nvim-lsp-installer/core/functional/list.lua @@ -77,4 +77,14 @@ end, 2) ---@return T[] @A shallow copy of the list. _.list_copy = _.map(fun.identity) +_.concat = fun.curryN(function(a, b) + if type(a) == "table" then + assert(type(b) == "table", "concat: expected table") + return vim.list_extend(_.list_copy(a), b) + elseif type(a) == "string" then + assert(type(b) == "string", "concat: expected string") + return a .. b + end +end, 2) + return _ diff --git a/lua/nvim-lsp-installer/core/functional/logic.lua b/lua/nvim-lsp-installer/core/functional/logic.lua index 262f04a8..70b349dd 100644 --- a/lua/nvim-lsp-installer/core/functional/logic.lua +++ b/lua/nvim-lsp-installer/core/functional/logic.lua @@ -32,6 +32,13 @@ _.is_not = function(value) return not value end +---@generic T +---@param predicate fun(value: T): boolean +---@param value T +_.complement = fun.curryN(function(predicate, value) + return not predicate(value) +end, 2) + _.cond = fun.curryN(function(predicate_transformer_pairs, value) for _, pair in ipairs(predicate_transformer_pairs) do local predicate, transformer = pair[1], pair[2] |
