61 lines
1.4 KiB
Lua
61 lines
1.4 KiB
Lua
--[[
|
|
return the field normalized (comma separated, single space)
|
|
and add individual player names to recipient list
|
|
--]]
|
|
function mail.normalize_players_and_add_recipients(field, recipients)
|
|
local order = mail.parse_player_list(field)
|
|
for _, c in ipairs(order) do
|
|
if recipients[string.lower(c)] == nil then
|
|
recipients[string.lower(c)] = c
|
|
end
|
|
end
|
|
return mail.concat_player_list(order)
|
|
end
|
|
|
|
|
|
function mail.parse_player_list(field)
|
|
if not field then
|
|
return {}
|
|
end
|
|
|
|
local separator = ", "
|
|
local pattern = "([^" .. separator .. "]+)"
|
|
|
|
-- get individual players
|
|
local player_set = {}
|
|
local order = {}
|
|
field:gsub(pattern, function(c)
|
|
if player_set[string.lower(c)] == nil then
|
|
player_set[string.lower(c)] = c
|
|
order[#order+1] = c
|
|
end
|
|
end)
|
|
|
|
return order
|
|
end
|
|
|
|
function mail.concat_player_list(order)
|
|
-- turn list of players back into normalized string
|
|
return table.concat(order, ", ")
|
|
end
|
|
|
|
function mail.player_in_list(name, list)
|
|
list = list or {}
|
|
if type(list) == "string" then
|
|
list = mail.parse_player_list(list)
|
|
end
|
|
for _, c in pairs(list) do
|
|
if name == c then
|
|
return true
|
|
end
|
|
end
|
|
return false
|
|
end
|
|
|
|
|
|
function mail.ensure_new_format(message, name)
|
|
if message.to == nil then
|
|
message.to = name
|
|
end
|
|
end
|