aboutsummaryrefslogtreecommitdiffstats
path: root/lua/mason-core
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
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')
-rw-r--r--lua/mason-core/functional/init.lua5
-rw-r--r--lua/mason-core/functional/string.lua31
-rw-r--r--lua/mason-core/installer/registry/expr.lua3
3 files changed, 37 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 _
diff --git a/lua/mason-core/installer/registry/expr.lua b/lua/mason-core/installer/registry/expr.lua
index 2713fcc4..17307ac2 100644
--- a/lua/mason-core/installer/registry/expr.lua
+++ b/lua/mason-core/installer/registry/expr.lua
@@ -20,6 +20,9 @@ local FILTERS = {
to_upper = _.to_upper,
trim = _.trim,
trim_start = _.trim_start,
+ trim_end = _.trim_end,
+ strip_prefix = _.strip_prefix,
+ strip_suffix = _.strip_suffix,
tostring = tostring,
}