annotate Modules/Utils.lua @ 23:819bfdc5d73c

More debug messages and added the ability to scroll the debug window.
author Asa Ayers <Asa.Ayers@Gmail.com>
date Thu, 08 Jul 2010 23:55:05 -0700
parents ff9a698caebc
children 554b30908b33
rev   line source
Asa@3 1 local addonName, addonTable = ...;
Asa@15 2 local addon = _G[addonName]
Asa@3 3
Asa@3 4 addonTable.utils = addon
Asa@9 5 IAUtils = addon
Asa@3 6
Asa@20 7 function addon:FormatMoney(copper, color, textOnly)
Asa@20 8 color = color or "|cFFFFFFFF"
Asa@6 9 local prefix = ""
Asa@16 10 if copper < 0 then
Asa@6 11 prefix = "-"
Asa@16 12 copper = abs(copper)
Asa@6 13 end
Asa@20 14
Asa@20 15 local copperTexture = COPPER_AMOUNT_TEXTURE
Asa@20 16 local silverTexture = SILVER_AMOUNT_TEXTURE
Asa@20 17 local goldTexture = GOLD_AMOUNT_TEXTURE
Asa@20 18 if textOnly then
Asa@20 19 copperTexture = '%dc'
Asa@20 20 silverTexture = '%ds'
Asa@20 21 goldTexture = '%dg'
Asa@20 22 end
Asa@16 23
Asa@16 24 local gold = floor( copper / 10000 );
Asa@16 25 copper = mod(copper, 10000)
Asa@16 26 local silver = floor( copper / 100 );
Asa@16 27 copper = mod(copper, 100)
Asa@16 28
Asa@16 29
Asa@20 30 copper = color .. format(copperTexture, copper, 13, 13)
Asa@16 31 if silver > 0 or gold > 0 then
Asa@20 32 silver = color.. format(silverTexture, silver, 13, 13) .. ' '
Asa@16 33 else
Asa@16 34 silver = ""
Asa@16 35 end
Asa@16 36 if gold > 0 then
Asa@20 37 gold = color.. format(goldTexture, gold, 13, 13) .. ' '
Asa@16 38 else
Asa@16 39 gold = ""
Asa@16 40 end
Asa@16 41
Asa@16 42 return format("%s%s%s%s", prefix, gold, silver, copper)
Asa@6 43 end
Asa@6 44
Asa@8 45 -- This is only here to make sure this doesn't blow up if ReplaceItemCache is never called
Asa@7 46 local item_db = {}
Asa@7 47
Asa@7 48 function addon:ReplaceItemCache(new_cache)
Asa@7 49 item_db = new_cache
Asa@7 50 end
Asa@7 51
Asa@7 52 -- This will be reset every session
Asa@7 53 local tmp_item_cache = {}
Asa@7 54 function addon:GetItemID(itemName)
Asa@7 55 if item_db[itemName] ~= nil then
Asa@7 56 return item_db[itemName]
Asa@7 57 end
Asa@7 58
Asa@7 59 if tmp_item_cache[itemName] == nil then
Asa@7 60 local _, itemLink = GetItemInfo (itemName);
Asa@7 61 if itemLink ~= nil then
Asa@7 62 local _, _, _, _, itemID = string.find(itemLink, "|?c?f?f?(%x*)|?H?([^:]*):?(%d+):?(%d*):?(%d*):?(%d*):?(%d*):?(%d*):?(%-?%d*):?(%-?%d*):?(%d*)|?h?%[?([^%[%]]*)%]?|?h?|?r?")
Asa@7 63 tmp_item_cache[itemName] = tonumber(itemID)
Asa@7 64 end
Asa@7 65 end
Asa@7 66
Asa@9 67 if tmp_item_cache[itemName] == nil then
Asa@9 68 for link, data in pairs(ItemAuditor.db.factionrealm.items) do
Asa@9 69 local name, itemLink = GetItemInfo (link);
Asa@9 70 if name == itemName then
Asa@9 71 local _, _, _, _, itemID = string.find(itemLink, "|?c?f?f?(%x*)|?H?([^:]*):?(%d+):?(%d*):?(%d*):?(%d*):?(%d*):?(%d*):?(%-?%d*):?(%-?%d*):?(%d*)|?h?%[?([^%[%]]*)%]?|?h?|?r?")
Asa@9 72 tmp_item_cache[itemName] = tonumber(itemID)
Asa@9 73 end
Asa@9 74 end
Asa@9 75
Asa@9 76 end
Asa@9 77
Asa@7 78 return tmp_item_cache[itemName]
Asa@7 79 end
Asa@7 80
Asa@9 81 function addon:GetLinkFromName(itemName)
Asa@9 82 local itemID = self:GetItemID(itemName)
Asa@9 83 local itemLink
Asa@9 84 if itemID ~= nil then
Asa@9 85 _, itemLink = GetItemInfo(itemID)
Asa@9 86 end
Asa@9 87
Asa@9 88 return itemLink
Asa@9 89 end
Asa@9 90
Asa@7 91 function addon:SaveItemID(itemName, id)
Asa@7 92 item_db[itemName] = tonumber(id)
Asa@7 93 end
Asa@7 94
Asa@6 95 local SubjectPatterns = {
Asa@6 96 AHCancelled = gsub(AUCTION_REMOVED_MAIL_SUBJECT, "%%s", ".*"),
Asa@6 97 AHExpired = gsub(AUCTION_EXPIRED_MAIL_SUBJECT, "%%s", ".*"),
Asa@6 98 AHOutbid = gsub(AUCTION_OUTBID_MAIL_SUBJECT, "%%s", ".*"),
Asa@6 99 AHSuccess = gsub(AUCTION_SOLD_MAIL_SUBJECT, "%%s", ".*"),
Asa@6 100 AHWon = gsub(AUCTION_WON_MAIL_SUBJECT, "%%s", ".*"),
Asa@6 101 CODPayment = gsub(COD_PAYMENT, "%%s", "(.*)"),
Asa@6 102 }
Asa@6 103
Asa@6 104 function addon:GetMailType(msgSubject)
Asa@6 105 if msgSubject then
Asa@6 106 for k, v in pairs(SubjectPatterns) do
Asa@6 107 if msgSubject:find(v) then return k end
Asa@6 108 end
Asa@6 109 end
Asa@6 110 return "NonAHMail"
Asa@3 111 end
Asa@3 112
Asa@3 113 function addon:tcount(tab)
Asa@3 114 local n = #tab
Asa@3 115 if (n == 0) then
Asa@3 116 for _ in pairs(tab) do
Asa@3 117 n = n + 1
Asa@3 118 end
Asa@3 119 end
Asa@3 120 return n
Asa@3 121 end
Asa@3 122
Asa@3 123 function addon:GetDebug(info)
Asa@11 124 return self.db.char.debug
Asa@3 125 end
Asa@3 126
Asa@3 127 function addon:SetDebug(info, input)
Asa@11 128
Asa@11 129 ItemAuditor.db.char.debug = input
Asa@3 130 local value = "off"
Asa@3 131 if input then
Asa@3 132 value = "on"
Asa@3 133 end
Asa@11 134 self:Print("Debugging is now: " .. value)
Asa@3 135 end