diff options
| author | William Boman <william@redwill.se> | 2022-12-26 16:50:40 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-12-26 16:50:40 +0100 |
| commit | 05ea35e25dcb03fc019be9ec0ede7e4782bae6b4 (patch) | |
| tree | 2458ad78bddd6f69a348d8381119bc7bc6667142 /lua/mason-core/functional | |
| parent | refactor(installer): introduce PackageInstallOpts class (#802) (diff) | |
| download | mason-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')
| -rw-r--r-- | lua/mason-core/functional/init.lua | 5 | ||||
| -rw-r--r-- | lua/mason-core/functional/string.lua | 31 |
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 _ |
