comparison Modules/Utils.lua @ 65:32d53abee666

Converting ItemAuditor modules into true modules instead of a bunch of files that all write to the ItemAuditor table.
author Asa Ayers <Asa.Ayers@Gmail.com>
date Tue, 27 Jul 2010 18:15:38 -0700
parents e7d287cc3b02
children 8d5ad3b71f6f
comparison
equal deleted inserted replaced
64:e92a5adf75bf 65:32d53abee666
1 local ItemAuditor = select(2, ...) 1 local ItemAuditor = select(2, ...)
2 local Utils = ItemAuditor:NewModule("Utils") 2 local Utils = ItemAuditor:NewModule("Utils")
3 3
4 function ItemAuditor:FormatMoney(copper, color, textOnly) 4 function Utils.FormatMoney(copper, color, textOnly)
5 color = color or "|cFFFFFFFF" 5 color = color or "|cFFFFFFFF"
6 local prefix = "" 6 local prefix = ""
7 if copper < 0 then 7 if copper < 0 then
8 prefix = "-" 8 prefix = "-"
9 copper = abs(copper) 9 copper = abs(copper)
38 38
39 return format("%s%s%s%s", prefix, gold, silver, copper) 39 return format("%s%s%s%s", prefix, gold, silver, copper)
40 end 40 end
41 41
42 -- Copied from QuickAuctions 42 -- Copied from QuickAuctions
43 function ItemAuditor.validateMoney(value) 43 function Utils.validateMoney(value)
44 local gold = tonumber(string.match(value, "([0-9]+)|c([0-9a-fA-F]+)g|r") or string.match(value, "([0-9]+)g")) 44 local gold = tonumber(string.match(value, "([0-9]+)|c([0-9a-fA-F]+)g|r") or string.match(value, "([0-9]+)g"))
45 local silver = tonumber(string.match(value, "([0-9]+)|c([0-9a-fA-F]+)s|r") or string.match(value, "([0-9]+)s")) 45 local silver = tonumber(string.match(value, "([0-9]+)|c([0-9a-fA-F]+)s|r") or string.match(value, "([0-9]+)s"))
46 local copper = tonumber(string.match(value, "([0-9]+)|c([0-9a-fA-F]+)c|r") or string.match(value, "([0-9]+)c")) 46 local copper = tonumber(string.match(value, "([0-9]+)|c([0-9a-fA-F]+)c|r") or string.match(value, "([0-9]+)c"))
47 47
48 if( not gold and not silver and not copper ) then 48 if( not gold and not silver and not copper ) then
52 52
53 return true 53 return true
54 end 54 end
55 55
56 -- Copied from QuickAuctions 56 -- Copied from QuickAuctions
57 function ItemAuditor.parseMoney(value) 57 function Utils.parseMoney(value)
58 local gold = tonumber(string.match(value, "([0-9]+)|c([0-9a-fA-F]+)g|r") or string.match(value, "([0-9]+)g")) 58 local gold = tonumber(string.match(value, "([0-9]+)|c([0-9a-fA-F]+)g|r") or string.match(value, "([0-9]+)g"))
59 local silver = tonumber(string.match(value, "([0-9]+)|c([0-9a-fA-F]+)s|r") or string.match(value, "([0-9]+)s")) 59 local silver = tonumber(string.match(value, "([0-9]+)|c([0-9a-fA-F]+)s|r") or string.match(value, "([0-9]+)s"))
60 local copper = tonumber(string.match(value, "([0-9]+)|c([0-9a-fA-F]+)c|r") or string.match(value, "([0-9]+)c")) 60 local copper = tonumber(string.match(value, "([0-9]+)|c([0-9a-fA-F]+)c|r") or string.match(value, "([0-9]+)c"))
61 61
62 -- Convert it all into copper 62 -- Convert it all into copper
63 return (copper or 0) + ((gold or 0) * COPPER_PER_GOLD) + ((silver or 0) * COPPER_PER_SILVER) 63 return (copper or 0) + ((gold or 0) * COPPER_PER_GOLD) + ((silver or 0) * COPPER_PER_SILVER)
64
65 end 64 end
66 65
67 -- This is only here to make sure this doesn't blow up if ReplaceItemCache is never called
68 local item_db = {}
69 66
70 function ItemAuditor:ReplaceItemCache(new_cache)
71 item_db = new_cache
72 end
73
74 -- This will be reset every session
75 local tmp_item_cache = {} 67 local tmp_item_cache = {}
76 function ItemAuditor:GetItemID(itemName) 68 function Utils.GetItemID(itemName)
77 if item_db[itemName] ~= nil then
78 return item_db[itemName]
79 end
80
81 if tmp_item_cache[itemName] == nil then 69 if tmp_item_cache[itemName] == nil then
82 local _, itemLink = GetItemInfo (itemName); 70 local _, itemLink = GetItemInfo (itemName);
83 if itemLink ~= nil then 71 if itemLink ~= nil then
84 local _, _, _, _, itemID = string.find(itemLink, "|?c?f?f?(%x*)|?H?([^:]*):?(%d+):?(%d*):?(%d*):?(%d*):?(%d*):?(%d*):?(%-?%d*):?(%-?%d*):?(%d*)|?h?%[?([^%[%]]*)%]?|?h?|?r?") 72 local _, _, _, _, itemID = string.find(itemLink, "|?c?f?f?(%x*)|?H?([^:]*):?(%d+):?(%d*):?(%d*):?(%d*):?(%d*):?(%d*):?(%-?%d*):?(%-?%d*):?(%d*)|?h?%[?([^%[%]]*)%]?|?h?|?r?")
85 tmp_item_cache[itemName] = tonumber(itemID) 73 tmp_item_cache[itemName] = tonumber(itemID)
98 end 86 end
99 87
100 return tmp_item_cache[itemName] 88 return tmp_item_cache[itemName]
101 end 89 end
102 90
91
103 function ItemAuditor:GetLinkFromName(itemName) 92 function ItemAuditor:GetLinkFromName(itemName)
104 local itemID = self:GetItemID(itemName) 93 local itemID = self:GetItemID(itemName)
105 local itemLink 94 local itemLink
106 if itemID ~= nil then 95 if itemID ~= nil then
107 _, itemLink = GetItemInfo(itemID) 96 _, itemLink = GetItemInfo(itemID)
108 end 97 end
109 98
110 return itemLink 99 return itemLink
111 end 100 end
112 101
113 function ItemAuditor:SaveItemID(itemName, id) 102 local SubjectPatterns = {
114 item_db[itemName] = tonumber(id)
115 end
116
117 ItemAuditor.SubjectPatterns = {
118 AHCancelled = gsub(AUCTION_REMOVED_MAIL_SUBJECT, "%%s", ".*"), 103 AHCancelled = gsub(AUCTION_REMOVED_MAIL_SUBJECT, "%%s", ".*"),
119 AHExpired = gsub(AUCTION_EXPIRED_MAIL_SUBJECT, "%%s", ".*"), 104 AHExpired = gsub(AUCTION_EXPIRED_MAIL_SUBJECT, "%%s", ".*"),
120 AHOutbid = gsub(AUCTION_OUTBID_MAIL_SUBJECT, "%%s", ".*"), 105 AHOutbid = gsub(AUCTION_OUTBID_MAIL_SUBJECT, "%%s", ".*"),
121 AHSuccess = gsub(AUCTION_SOLD_MAIL_SUBJECT, "%%s", ".*"), 106 AHSuccess = gsub(AUCTION_SOLD_MAIL_SUBJECT, "%%s", ".*"),
122 AHWon = gsub(AUCTION_WON_MAIL_SUBJECT, "%%s", ".*"), 107 AHWon = gsub(AUCTION_WON_MAIL_SUBJECT, "%%s", ".*"),
123 CODPayment = gsub(COD_PAYMENT, "%%s", "(.*)"), 108 CODPayment = gsub(COD_PAYMENT, "%%s", "(.*)"),
124 } 109 }
125 110
126 function ItemAuditor:GetMailType(msgSubject) 111 function Utils.GetMailType(msgSubject)
127 if msgSubject then 112 if msgSubject then
128 for k, v in pairs(self.SubjectPatterns) do 113 for k, v in pairs(SubjectPatterns) do
129 if msgSubject:find(v) then return k end 114 if msgSubject:find(v) then return k end
130 end 115 end
131 end 116 end
132 return "NonAHMail" 117 return "NonAHMail"
133 end 118 end
153 if input then 138 if input then
154 value = "on" 139 value = "on"
155 end 140 end
156 self:Print("Debugging is now: " .. value) 141 self:Print("Debugging is now: " .. value)
157 end 142 end
143
144 -- TODO: Once everything points to the correct Utils method, all of these should be removed
145
146 function ItemAuditor:FormatMoney(copper, color, textOnly)
147 return Utils.FormatMoney(copper, color, textOnly)
148 end
149
150
151 function ItemAuditor:GetMailType(msgSubject)
152 return Utils.GetMailType(msgSubject)
153 end
154
155 function ItemAuditor:GetItemID(itemName)
156 return Utils.GetItemID(itemName)
157 end
158
159 ItemAuditor.parseMoney = Utils.parseMoney
160 ItemAuditor.validateMoney = Utils.validateMoney