diff options
| author | William Boman <william@redwill.se> | 2023-06-13 15:45:34 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-06-13 15:45:34 +0200 |
| commit | f99b70233e49db2229350bb82d9ddc6e2f4131c0 (patch) | |
| tree | 6fe259fe17563f9c905333b489d265e277ff9c31 /lua | |
| parent | fix(async): always check channel state (#1351) (diff) | |
| download | mason-f99b70233e49db2229350bb82d9ddc6e2f4131c0.tar mason-f99b70233e49db2229350bb82d9ddc6e2f4131c0.tar.gz mason-f99b70233e49db2229350bb82d9ddc6e2f4131c0.tar.bz2 mason-f99b70233e49db2229350bb82d9ddc6e2f4131c0.tar.lz mason-f99b70233e49db2229350bb82d9ddc6e2f4131c0.tar.xz mason-f99b70233e49db2229350bb82d9ddc6e2f4131c0.tar.zst mason-f99b70233e49db2229350bb82d9ddc6e2f4131c0.zip | |
fix(functional): strip_prefix and strip_suffix should not use patterns (#1352)
Diffstat (limited to 'lua')
| -rw-r--r-- | lua/mason-core/functional/string.lua | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/lua/mason-core/functional/string.lua b/lua/mason-core/functional/string.lua index e9e060f7..c641dcbc 100644 --- a/lua/mason-core/functional/string.lua +++ b/lua/mason-core/functional/string.lua @@ -108,21 +108,27 @@ _.trim_end_matches = fun.curryN(function(pattern, 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 + if #prefix_pattern > #str then return str end + for i = 1, #prefix_pattern do + if str:sub(i, i) ~= prefix_pattern:sub(i, i) then + return str + end + end + return str:sub(#prefix_pattern + 1) 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 + if #suffix_pattern > #str then return str end + for i = 1, #suffix_pattern do + if str:sub(-i, -i) ~= suffix_pattern:sub(-i, -i) then + return str + end + end + return str:sub(1, -#suffix_pattern - 1) end, 2) return _ |
