40 lines
1,012 B
Lua
40 lines
1,012 B
Lua
|
|
function string:case_insensitive_pattern()
|
||
|
|
local p = self:gsub("(%%?)(.)", function(percent, letter)
|
||
|
|
if percent ~= "" or not letter:match("%a") then
|
||
|
|
return percent .. letter;
|
||
|
|
else
|
||
|
|
return string.format("[%s%s]", letter:lower(), letter:upper());
|
||
|
|
end
|
||
|
|
end);
|
||
|
|
return p;
|
||
|
|
end
|
||
|
|
|
||
|
|
function string:findi(pattern, init, plain)
|
||
|
|
if(init ~= nil and plain ~= nil) then
|
||
|
|
return self:find(pattern:case_insensitive_pattern(), init, plain);
|
||
|
|
else
|
||
|
|
return self:find(pattern:case_insensitive_pattern());
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
function string:gmatchi(pattern)
|
||
|
|
return self:gmatch(pattern:case_insensitive_pattern());
|
||
|
|
end
|
||
|
|
|
||
|
|
function string:gsubi(pattern, replace, n)
|
||
|
|
if(n ~= nil) then
|
||
|
|
return self:gsub(pattern:case_insensitive_pattern(), replace, n);
|
||
|
|
else
|
||
|
|
return self:gsub(pattern:case_insensitive_pattern(), replace);
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
function string:matchi(pattern, init)
|
||
|
|
if(init ~= nil) then
|
||
|
|
return self:match(pattern:case_insensitive_pattern(), init);
|
||
|
|
else
|
||
|
|
return self:match(pattern:case_insensitive_pattern());
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|