# HG changeset patch # User Seve Ferrer # Date 1601311593 -7200 # Node ID 94e3e77532202a38190b9a640342823de6928f5d # Parent df1e0465ff8114698116683849b6f23d56d0fd96 mod_muc_inject_mentions: Improve mentions lookup by using a set instead of a list diff -r df1e0465ff81 -r 94e3e7753220 mod_muc_inject_mentions/mod_muc_inject_mentions.lua --- a/mod_muc_inject_mentions/mod_muc_inject_mentions.lua Wed Sep 30 13:27:27 2020 +0100 +++ b/mod_muc_inject_mentions/mod_muc_inject_mentions.lua Mon Sep 28 18:46:33 2020 +0200 @@ -6,21 +6,10 @@ local suffixes = module:get_option("muc_inject_mentions_suffixes", nil) local enabled_rooms = module:get_option("muc_inject_mentions_enabled_rooms", nil) local disabled_rooms = module:get_option("muc_inject_mentions_disabled_rooms", nil) - -local reference_xmlns = "urn:xmpp:reference:0" +local mention_delimiters = module:get_option_set("muc_inject_mentions_mention_delimiters", {" ", "", "\n"}) -local mention_delimiters = {" ", "", "\n"} - -local function in_list(value, list) - for _, v in ipairs(list) do - if v == value then - return true - end - end - return false -end - +local reference_xmlns = "urn:xmpp:reference:0" local function is_room_eligible(jid) if not enabled_rooms and not disabled_rooms then @@ -55,7 +44,7 @@ -- Preffix must have a space before it, -- be the first character of the body -- or be the first character after a new line - if not in_list(body:sub(first - 2, first - 2), mention_delimiters) then + if not mention_delimiters:contains(body:sub(first - 2, first - 2)) then return false end @@ -76,7 +65,7 @@ -- Suffix must have a space after it, -- be the last character of the body -- or be the last character before a new line - if not in_list(body:sub(last + 2, last + 2), mention_delimiters) then + if not mention_delimiters:contains(body:sub(last + 2, last + 2)) then return false end @@ -115,8 +104,8 @@ local first, last = match.first, match.last -- Body only contains nickname or is between spaces, new lines or at the end/start of the body - if in_list(body:sub(first - 1, first - 1), mention_delimiters) and - in_list(body:sub(last + 1, last + 1), mention_delimiters) + if mention_delimiters:contains(body:sub(first - 1, first - 1)) and + mention_delimiters:contains(body:sub(last + 1, last + 1)) then table.insert(mentions, {bare_jid=bare_jid, first=first, last=last}) else @@ -130,13 +119,13 @@ -- @nickname ... elseif has_preffix and not has_suffix then - if in_list(body:sub(last + 1, last + 1), mention_delimiters) then + if mention_delimiters:contains(body:sub(last + 1, last + 1)) then table.insert(mentions, {bare_jid=bare_jid, first=first, last=last}) end -- nickname: ... elseif not has_preffix and has_suffix then - if in_list(body:sub(first - 1, first - 1), mention_delimiters) then + if mention_delimiters:contains(body:sub(first - 1, first - 1)) then table.insert(mentions, {bare_jid=bare_jid, first=first, last=last}) end end