No need for the case_insensitive function, can just :lower() the string + use plain matching

This commit is contained in:
Ksaper 2023-02-24 20:39:21 +02:00
parent d7f23096d4
commit 24cdcb9385
1 changed files with 2 additions and 17 deletions

View File

@ -71,24 +71,9 @@ local function string_levenshtein(str1, str2)
return matrix[len1][len2]
end
local function case_insensitive_pattern(pattern)
-- find an optional '%' (group 1) followed by any character (group 2)
local p = pattern:gsub("(%%?)(.)", function(percent, letter)
if percent ~= "" or not letter:match("%a") then
-- if the '%' matched, or `letter` is not a letter, return "as is"
return percent .. letter
else
-- else, return a case-insensitive character class of the matched letter
return string.format("[%s%s]", letter:lower(), letter:upper())
end
end)
return p
end
local function has_value(tab, val)
for index, value in pairs(tab) do
if val:find(case_insensitive_pattern(value)) then
for _, value in ipairs(tab) do
if val:lower():find(value:lower(), 1, true) then
return true
end
end