blob: b504fb1d602c3ed2ec77fd66c44796e18b4552cd (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
return function (input, other, fast)
if input == other then
return true
end
if input == '' then
return true
end
if #input > #other then
return false
end
local lMe = input:lower()
local lOther = other:lower()
if lMe == lOther:sub(1, #lMe) then
return true
end
if fast and input:sub(1, 1) ~= other:sub(1, 1) then
return false
end
local chars = {}
for i = 1, #lOther do
local c = lOther:sub(i, i)
chars[c] = (chars[c] or 0) + 1
end
for i = 1, #lMe do
local c = lMe:sub(i, i)
if chars[c] and chars[c] > 0 then
chars[c] = chars[c] - 1
else
return false
end
end
return true
end
|