aboutsummaryrefslogtreecommitdiffstats
path: root/lua/mason-core/functional/string.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/mason-core/functional/string.lua')
-rw-r--r--lua/mason-core/functional/string.lua31
1 files changed, 30 insertions, 1 deletions
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 _