diff options
Diffstat (limited to 'lua/mason-core/functional')
| -rw-r--r-- | lua/mason-core/functional/function.lua | 5 | ||||
| -rw-r--r-- | lua/mason-core/functional/init.lua | 3 | ||||
| -rw-r--r-- | lua/mason-core/functional/list.lua | 7 | ||||
| -rw-r--r-- | lua/mason-core/functional/string.lua | 4 |
4 files changed, 19 insertions, 0 deletions
diff --git a/lua/mason-core/functional/function.lua b/lua/mason-core/functional/function.lua index c6d460a5..f1475229 100644 --- a/lua/mason-core/functional/function.lua +++ b/lua/mason-core/functional/function.lua @@ -89,4 +89,9 @@ _.lazy = function(fn) end end +_.tap = _.curryN(function(fn, value) + fn(value) + return value +end, 2) + return _ diff --git a/lua/mason-core/functional/init.lua b/lua/mason-core/functional/init.lua index ed502a4b..04ef1534 100644 --- a/lua/mason-core/functional/init.lua +++ b/lua/mason-core/functional/init.lua @@ -27,6 +27,7 @@ _.T = fun.T _.F = fun.F _.memoize = fun.memoize _.lazy = fun.lazy +_.tap = fun.tap ---@module "mason-core.functional.list" local list = lazy_require "mason-core.functional.list" @@ -45,6 +46,7 @@ _.prepend = list.prepend _.zip_table = list.zip_table _.nth = list.nth _.head = list.head +_.last = list.last _.length = list.length _.flatten = list.flatten _.sort_by = list.sort_by @@ -80,6 +82,7 @@ _.dec = number.dec ---@module "mason-core.functional.string" local string = lazy_require "mason-core.functional.string" _.matches = string.matches +_.match = string.match _.format = string.format _.split = string.split _.gsub = string.gsub diff --git a/lua/mason-core/functional/list.lua b/lua/mason-core/functional/list.lua index 31b631b8..2a5378fe 100644 --- a/lua/mason-core/functional/list.lua +++ b/lua/mason-core/functional/list.lua @@ -148,6 +148,13 @@ end, 2) _.head = _.nth(1) +---@generic T +---@param list T[] +---@return T? +_.last = function(list) + return list[#list] +end + ---@param value string|any[] _.length = function(value) return #value diff --git a/lua/mason-core/functional/string.lua b/lua/mason-core/functional/string.lua index 7726c8e1..9b7da979 100644 --- a/lua/mason-core/functional/string.lua +++ b/lua/mason-core/functional/string.lua @@ -8,6 +8,10 @@ _.matches = fun.curryN(function(pattern, str) return str:match(pattern) ~= nil end, 2) +_.match = fun.curryN(function(pattern, str) + return { str:match(pattern) } +end, 2) + ---@param template string ---@param str string _.format = fun.curryN(function(template, str) |
