aboutsummaryrefslogtreecommitdiffstats
path: root/lua/mason-core/functional
diff options
context:
space:
mode:
Diffstat (limited to 'lua/mason-core/functional')
-rw-r--r--lua/mason-core/functional/init.lua5
-rw-r--r--lua/mason-core/functional/string.lua31
2 files changed, 34 insertions, 2 deletions
diff --git a/lua/mason-core/functional/init.lua b/lua/mason-core/functional/init.lua
index 837f9558..153c40aa 100644
--- a/lua/mason-core/functional/init.lua
+++ b/lua/mason-core/functional/init.lua
@@ -99,7 +99,10 @@ _.format = string.format
_.split = string.split
_.gsub = string.gsub
_.trim = string.trim
-_.trim_start = string.trim_start
+_.trim_start_matches = string.trim_start_matches
+_.trim_end_matches = string.trim_end_matches
+_.strip_prefix = string.strip_prefix
+_.strip_suffix = string.strip_suffix
_.dedent = string.dedent
_.starts_with = string.starts_with
_.to_upper = string.to_upper
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 _