From 37c745fa73b983c86904132efb30ef2a4a76df5e Mon Sep 17 00:00:00 2001 From: William Boman Date: Sun, 30 Oct 2022 17:43:46 +0100 Subject: feat: add provider interface (#601) --- lua/mason-core/functional/function.lua | 5 +++++ lua/mason-core/functional/init.lua | 3 +++ lua/mason-core/functional/list.lua | 7 +++++++ lua/mason-core/functional/string.lua | 4 ++++ 4 files changed, 19 insertions(+) (limited to 'lua/mason-core/functional') 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) -- cgit v1.2.3-70-g09d2