12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- --[[
- 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
|