/Tukui/modules/chat/copyurl.lua

http://github.com/Asphyxia/Tukui · Lua · 66 lines · 59 code · 6 blank · 1 comment · 13 complexity · dc8092274c51a12cda379963a061bc59 MD5 · raw file

  1. local T, C, L = unpack(select(2, ...)) -- Import: T - functions, constants, variables; C - config; L - locales
  2. if C["chat"].enable ~= true then return end
  3. local SetItemRef_orig = SetItemRef
  4. function ReURL_SetItemRef(link, text, button, chatFrame)
  5. if (strsub(link, 1, 3) == "url") then
  6. local ChatFrameEditBox = ChatEdit_ChooseBoxForSend()
  7. local url = strsub(link, 5);
  8. if (not ChatFrameEditBox:IsShown()) then
  9. ChatEdit_ActivateChat(ChatFrameEditBox)
  10. end
  11. ChatFrameEditBox:Insert(url)
  12. ChatFrameEditBox:HighlightText()
  13. else
  14. SetItemRef_orig(link, text, button, chatFrame)
  15. end
  16. end
  17. SetItemRef = ReURL_SetItemRef
  18. function ReURL_AddLinkSyntax(chatstring)
  19. if (type(chatstring) == "string") then
  20. local extraspace;
  21. if (not strfind(chatstring, "^ ")) then
  22. extraspace = true;
  23. chatstring = " "..chatstring;
  24. end
  25. chatstring = gsub (chatstring, " www%.([_A-Za-z0-9-]+)%.(%S+)%s?", ReURL_Link("www.%1.%2"))
  26. chatstring = gsub (chatstring, " (%a+)://(%S+)%s?", ReURL_Link("%1://%2"))
  27. chatstring = gsub (chatstring, " ([_A-Za-z0-9-%.]+)@([_A-Za-z0-9-]+)(%.+)([_A-Za-z0-9-%.]+)%s?", ReURL_Link("%1@%2%3%4"))
  28. chatstring = gsub (chatstring, " (%d%d?%d?)%.(%d%d?%d?)%.(%d%d?%d?)%.(%d%d?%d?):(%d%d?%d?%d?%d?)%s?", ReURL_Link("%1.%2.%3.%4:%5"))
  29. chatstring = gsub (chatstring, " (%d%d?%d?)%.(%d%d?%d?)%.(%d%d?%d?)%.(%d%d?%d?)%s?", ReURL_Link("%1.%2.%3.%4"))
  30. if (extraspace) then
  31. chatstring = strsub(chatstring, 2);
  32. end
  33. end
  34. return chatstring
  35. end
  36. REURL_COLOR = "16FF5D"
  37. ReURL_Brackets = false
  38. ReUR_CustomColor = true
  39. function ReURL_Link(url)
  40. if (ReUR_CustomColor) then
  41. if (ReURL_Brackets) then
  42. url = " |cff"..REURL_COLOR.."|Hurl:"..url.."|h["..url.."]|h|r "
  43. else
  44. url = " |cff"..REURL_COLOR.."|Hurl:"..url.."|h"..url.."|h|r "
  45. end
  46. else
  47. if (ReURL_Brackets) then
  48. url = " |Hurl:"..url.."|h["..url.."]|h "
  49. else
  50. url = " |Hurl:"..url.."|h"..url.."|h "
  51. end
  52. end
  53. return url
  54. end
  55. --Hook all the AddMessage funcs
  56. for i=1, NUM_CHAT_WINDOWS do
  57. local frame = getglobal("ChatFrame"..i)
  58. local addmessage = frame.AddMessage
  59. frame.AddMessage = function(self, text, ...) addmessage(self, ReURL_AddLinkSyntax(text), ...) end
  60. end