aboutsummaryrefslogtreecommitdiffstats
path: root/lua/mason-core/functional/string.lua
diff options
context:
space:
mode:
authorWilliam Boman <william@redwill.se>2022-12-26 16:50:40 +0100
committerGitHub <noreply@github.com>2022-12-26 16:50:40 +0100
commit05ea35e25dcb03fc019be9ec0ede7e4782bae6b4 (patch)
tree2458ad78bddd6f69a348d8381119bc7bc6667142 /lua/mason-core/functional/string.lua
parentrefactor(installer): introduce PackageInstallOpts class (#802) (diff)
downloadmason-05ea35e25dcb03fc019be9ec0ede7e4782bae6b4.tar
mason-05ea35e25dcb03fc019be9ec0ede7e4782bae6b4.tar.gz
mason-05ea35e25dcb03fc019be9ec0ede7e4782bae6b4.tar.bz2
mason-05ea35e25dcb03fc019be9ec0ede7e4782bae6b4.tar.lz
mason-05ea35e25dcb03fc019be9ec0ede7e4782bae6b4.tar.xz
mason-05ea35e25dcb03fc019be9ec0ede7e4782bae6b4.tar.zst
mason-05ea35e25dcb03fc019be9ec0ede7e4782bae6b4.zip
feat(functional): add strip_{prefix,suffix} (#803)
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 _