From 05ea35e25dcb03fc019be9ec0ede7e4782bae6b4 Mon Sep 17 00:00:00 2001 From: William Boman Date: Mon, 26 Dec 2022 16:50:40 +0100 Subject: feat(functional): add strip_{prefix,suffix} (#803) --- lua/mason-core/functional/string.lua | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) (limited to 'lua/mason-core/functional/string.lua') diff --git a/lua/mason-core/functional/string.lua b/lua/mason-core/functional/string.lua index 2d53a5b6..e9e060f7 100644 --- a/lua/mason-core/functional/string.lua +++ b/lua/mason-core/functional/string.lua @@ -87,7 +87,7 @@ end ---@param pattern string ---@param str string -_.trim_start = fun.curryN(function(pattern, str) +_.trim_start_matches = fun.curryN(function(pattern, str) for i = 1, #str do if not str:sub(i, i):match(pattern) then return str:sub(i) @@ -96,4 +96,33 @@ _.trim_start = fun.curryN(function(pattern, str) return str end, 2) +---@param pattern string +---@param str string +_.trim_end_matches = fun.curryN(function(pattern, str) + for i = #str, 1, -1 do + if not str:sub(i, i):match(pattern) then + return str:sub(1, i) + end + end + return str +end, 2) + +_.strip_prefix = fun.curryN(function(prefix_pattern, str) + local _, start = string.find(str, "^" .. prefix_pattern) + if start then + return str:sub(start + 1) + else + return str + end +end, 2) + +_.strip_suffix = fun.curryN(function(suffix_pattern, str) + local stop = string.find(str, suffix_pattern .. "$") + if stop then + return str:sub(1, stop - 1) + else + return str + end +end, 2) + return _ -- cgit v1.2.3-70-g09d2