KlazChat/Modules/CopyLinks.lua
2024-02-29 00:23:53 -05:00

53 lines
1.4 KiB
Lua

--------------------------------------------------------------------------------
-- # MODULES > COPY LINKS
--------------------------------------------------------------------------------
local patterns = {
'(https://%S+%.%S+)',
'(http://%S+%.%S+)',
'(www%.%S+%.%S+)',
'(%d+%.%d+%.%d+%.%d+:?%d*/?%S*)'
}
for _, event in next, {
'CHAT_MSG_SAY',
'CHAT_MSG_YELL',
'CHAT_MSG_WHISPER',
'CHAT_MSG_WHISPER_INFORM',
'CHAT_MSG_GUILD',
'CHAT_MSG_OFFICER',
'CHAT_MSG_PARTY',
'CHAT_MSG_PARTY_LEADER',
'CHAT_MSG_RAID',
'CHAT_MSG_RAID_LEADER',
'CHAT_MSG_RAID_WARNING',
'CHAT_MSG_INSTANCE_CHAT',
'CHAT_MSG_INSTANCE_CHAT_LEADER',
'CHAT_MSG_BN_WHISPER',
'CHAT_MSG_BN_WHISPER_INFORM',
'CHAT_MSG_CHANNEL',
'CHAT_MSG_SYSTEM'
} do
ChatFrame_AddMessageEventFilter(event, function(_, event, str, ...)
for _, pattern in pairs(patterns) do
local result, match = string.gsub(str, pattern, '|cff1994ff|Hurl:%1|h[%1]|h|r')
if match > 0 then
return false, result, ...
end
end
end)
end
local SetHyperlink = _G.ItemRefTooltip.SetHyperlink
function _G.ItemRefTooltip:SetHyperlink(link, ...)
if link and (strsub(link, 1, 3) == 'url') then
local editbox = ChatEdit_ChooseBoxForSend()
ChatEdit_ActivateChat(editbox)
editbox:Insert(string.sub(link, 5))
editbox:HighlightText()
return
end
SetHyperlink(self, link, ...)
end