aboutsummaryrefslogtreecommitdiffstats
path: root/lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua')
-rw-r--r--lua/nvim-lsp-installer/core/functional/init.lua2
-rw-r--r--lua/nvim-lsp-installer/core/functional/list.lua10
-rw-r--r--lua/nvim-lsp-installer/core/functional/logic.lua7
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]