aboutsummaryrefslogtreecommitdiffstats
path: root/lua/mason-core/functional
diff options
context:
space:
mode:
authorWilliam Boman <william@redwill.se>2022-10-30 17:43:46 +0100
committerGitHub <noreply@github.com>2022-10-30 17:43:46 +0100
commit37c745fa73b983c86904132efb30ef2a4a76df5e (patch)
treec55fe52b7c5c20ed4fdbb3ee073519fd0ccbe6b2 /lua/mason-core/functional
parentchore: update generated code (#608) (diff)
downloadmason-37c745fa73b983c86904132efb30ef2a4a76df5e.tar
mason-37c745fa73b983c86904132efb30ef2a4a76df5e.tar.gz
mason-37c745fa73b983c86904132efb30ef2a4a76df5e.tar.bz2
mason-37c745fa73b983c86904132efb30ef2a4a76df5e.tar.lz
mason-37c745fa73b983c86904132efb30ef2a4a76df5e.tar.xz
mason-37c745fa73b983c86904132efb30ef2a4a76df5e.tar.zst
mason-37c745fa73b983c86904132efb30ef2a4a76df5e.zip
feat: add provider interface (#601)
Diffstat (limited to 'lua/mason-core/functional')
-rw-r--r--lua/mason-core/functional/function.lua5
-rw-r--r--lua/mason-core/functional/init.lua3
-rw-r--r--lua/mason-core/functional/list.lua7
-rw-r--r--lua/mason-core/functional/string.lua4
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)