aboutsummaryrefslogtreecommitdiffstats
path: root/lua/mason-core/functional/logic.lua
diff options
context:
space:
mode:
authorWilliam Boman <william@redwill.se>2022-08-15 21:03:06 +0200
committerGitHub <noreply@github.com>2022-08-15 21:03:06 +0200
commit3c62386a396ae0c1cd7adbaacc379eb4af072a65 (patch)
tree4d00d20958839a04e6a996c11b97724c762e491a /lua/mason-core/functional/logic.lua
parentchore: update generated code (#295) (diff)
downloadmason-3c62386a396ae0c1cd7adbaacc379eb4af072a65.tar
mason-3c62386a396ae0c1cd7adbaacc379eb4af072a65.tar.gz
mason-3c62386a396ae0c1cd7adbaacc379eb4af072a65.tar.bz2
mason-3c62386a396ae0c1cd7adbaacc379eb4af072a65.tar.lz
mason-3c62386a396ae0c1cd7adbaacc379eb4af072a65.tar.xz
mason-3c62386a396ae0c1cd7adbaacc379eb4af072a65.tar.zst
mason-3c62386a396ae0c1cd7adbaacc379eb4af072a65.zip
refactor: introduce selene, harden type defs, and use proper EmmyLua syntax (#296)
Diffstat (limited to 'lua/mason-core/functional/logic.lua')
-rw-r--r--lua/mason-core/functional/logic.lua19
1 files changed, 14 insertions, 5 deletions
diff --git a/lua/mason-core/functional/logic.lua b/lua/mason-core/functional/logic.lua
index 0e0044d5..125a94ee 100644
--- a/lua/mason-core/functional/logic.lua
+++ b/lua/mason-core/functional/logic.lua
@@ -4,7 +4,8 @@ local _ = {}
---@generic T
---@param predicates (fun(item: T): boolean)[]
----@return fun(item: T): boolean
+---@param item T
+---@return boolean
_.all_pass = fun.curryN(function(predicates, item)
for i = 1, #predicates do
if not predicates[i](item) then
@@ -16,7 +17,8 @@ end, 2)
---@generic T
---@param predicates (fun(item: T): boolean)[]
----@return fun(item: T): boolean
+---@param item T
+---@return boolean
_.any_pass = fun.curryN(function(predicates, item)
for i = 1, #predicates do
if predicates[i](item) then
@@ -26,11 +28,12 @@ _.any_pass = fun.curryN(function(predicates, item)
return false
end, 2)
----@generic T
+---@generic T, U
---@param predicate fun(item: T): boolean
----@param on_true fun(item: T): any
----@param on_false fun(item: T): any
+---@param on_true fun(item: T): U
+---@param on_false fun(item: T): U
---@param value T
+---@return U
_.if_else = fun.curryN(function(predicate, on_true, on_false, value)
if predicate(value) then
return on_true(value)
@@ -40,6 +43,7 @@ _.if_else = fun.curryN(function(predicate, on_true, on_false, value)
end, 4)
---@param value boolean
+---@return boolean
_.is_not = function(value)
return not value
end
@@ -47,10 +51,15 @@ end
---@generic T
---@param predicate fun(value: T): boolean
---@param value T
+---@return boolean
_.complement = fun.curryN(function(predicate, value)
return not predicate(value)
end, 2)
+---@generic T, U
+---@param predicate_transformer_pairs {[1]: (fun(value: T): boolean), [2]: (fun(value: T): U)}[]
+---@param value T
+---@return U?
_.cond = fun.curryN(function(predicate_transformer_pairs, value)
for _, pair in ipairs(predicate_transformer_pairs) do
local predicate, transformer = pair[1], pair[2]