I’m trying to program an addon for WoW (in lua). It’s a chat filter based on specific words. I can’t figure out how to get the array of these words to be case insensitive, so that any upper/lower case combination of the word matches the array. Any ideas would be greatly appreciated. Thanks!
local function wordFilter(self,event,msg)
local keyWords = {"word","test","blah","here","code","woot"}
local matchCount = 0;
for _, word in ipairs(keyWords) do
if (string.match(msg, word,)) then
matchCount = matchCount + 1;
end
end
if (matchCount > 1) then
return false;
else
return true;
end
end
table every time just to thorw it away moments latter, wasting time
on both creation and GC.
both upper and lower case letters.
from string, so use string.find for speed.
logic, if you’ve got more than one match you signal ‘false’. Since
you need only 1 match, you don’t need to count them. Just return
false as soon as you hit it. Saves you time for checking all
remaining words too. If later you decide you want more than one
match, you still better check it inside loop and return as soon as
you’ve reached desired count.
Don’t use ipairs. It’s slower than simple for loop from 1 to array length and ipairs is deprecated in Lua 5.2 anyway.
Result is: