comparison LibFarmbuyer.lua @ 19:f560cf82e7d3

Smarter handling of missed item cache entries. Basic persistent logging of debug messages (options panel or /loot debug alsolog) and script to print same.
author Farmbuyer of US-Kilrogg <farmbuyer@gmail.com>
date Mon, 29 Aug 2011 01:29:13 +0000
parents 5ee4edd24c13
children 8f7ec6ccf5e3
comparison
equal deleted inserted replaced
18:ca797c0f32d4 19:f560cf82e7d3
5 5
6 Library contents: 6 Library contents:
7 - author_debug 7 - author_debug
8 Evaluates to true if I'm hacking on something. 8 Evaluates to true if I'm hacking on something.
9 9
10 - tableprint(t) 10 - tableprint(t[,f])
11 A single print() call to the contents of T, including nils; strings are 11 A single print() call to the contents of T, including nils; strings are
12 cleaned up with respect to embedded '|'/control chars. If there is a 12 cleaned up with respect to embedded '|'/control chars. If a function F is
13 global LIBFARMPRINT function, it is called with the cleaned-up T instead 13 passed, calls that instead of print(). Returns the results of F, or the
14 of directly calling print. 14 text string passed to print(), depending on which was used.
15 15
16 - safeprint(...) 16 - safeprint(...)
17 Same as tableprint() on the argument list. 17 Same as tableprint() on the argument list. Returns the results of tableprint.
18 18
19 - safeiprint(...) 19 - safeiprint(...)
20 Same as safeprint() but with index numbers inserted. Ex: 20 Same as safeprint() but with <index> numbers inserted. Returns the results
21 safeiprint(a,b,c) --> <1>,a,<2>,b,<3>,c 21 of tableprint.
22 22 Ex: safeiprint(a,b,c) --> <1>,a,<2>,b,<3>,c
23 - CHAT(n)
24 Returns a function suitable for assigning to LIBFARMPRINT, directing all
25 output to builtin chat frame N.
26 23
27 - t = StaticPopup(t) 24 - t = StaticPopup(t)
28 Fills out "typical" settings inside T, especially if T contains any kind 25 Fills out "typical" settings inside T, especially if T contains any kind
29 of editbox: 26 of editbox:
30 + cannot accept an empty editbox 27 + cannot accept an empty editbox
51 48
52 - new(...), del(t), copy(t), clear() 49 - new(...), del(t), copy(t), clear()
53 Ditto for table recycling. 50 Ditto for table recycling.
54 ]] 51 ]]
55 52
56 local MAJOR, MINOR = "LibFarmbuyer", 11 53 local MAJOR, MINOR = "LibFarmbuyer", 12
57 assert(LibStub,MAJOR.." requires LibStub") 54 assert(LibStub,MAJOR.." requires LibStub")
58 local lib = LibStub:NewLibrary(MAJOR, MINOR) 55 local lib = LibStub:NewLibrary(MAJOR, MINOR)
59 if not lib then return end 56 if not lib then return end
60 57
61 _G[MAJOR] = lib 58 _G[MAJOR] = lib
99 96
100 ---------------------------------------------------------------------- 97 ----------------------------------------------------------------------
101 --[[ 98 --[[
102 safeprint 99 safeprint
103 ]] 100 ]]
101 local tconcat = table.concat
104 local function undocontrol(c) 102 local function undocontrol(c)
105 return ("\\%.3d"):format(c:byte()) 103 return ("\\%.3d"):format(c:byte())
106 end 104 end
107 function lib.CHAT(n)
108 local cf = _G["ChatFrame"..n]
109 return function(t)
110 local msg = table.concat(t,' ', i, tonumber(t.n) or #t)
111 cf:AddMessage(msg)
112 end
113 end
114 function lib.safeprint(...) 105 function lib.safeprint(...)
115 local args = { n=select('#',...), ... } 106 local args = { n=select('#',...), ... }
116 lib.tableprint(args) 107 return lib.tableprint(args)
117 end 108 end
118 function lib.safeiprint(...) 109 function lib.safeiprint(...)
119 local args = { n=select('#',...), ... } 110 local args = { n=select('#',...), ... }
120 local last = args.n 111 local last = args.n
121 while last > 0 do 112 while last > 0 do
122 table.insert (args, last, "<"..last..">") 113 table.insert (args, last, "<"..last..">")
123 last = last - 1 114 last = last - 1
124 end 115 end
125 args.n = 2 * args.n 116 args.n = 2 * args.n
126 lib.tableprint(args) 117 return lib.tableprint(args)
127 end 118 end
128 function lib.tableprint(t) 119 function lib.tableprint(t,f)
129 for i = 1, (tonumber(t.n) or #t) do 120 for i = 1, (tonumber(t.n) or #t) do
130 t[i] = tostring(t[i]):gsub('\124','\124\124') 121 t[i] = tostring(t[i]):gsub('\124','\124\124')
131 :gsub('(%c)', undocontrol) 122 :gsub('(%c)', undocontrol)
132 end 123 end
133 if type(_G.LIBFARMPRINT) == 'function' then 124 local msg = tconcat(t,' ', i, tonumber(t.n) or #t)
134 return _G.LIBFARMPRINT(t) 125 if f then
126 return f(msg)
135 else 127 else
136 return print(unpack(t)) 128 print(msg)
129 return msg,t
137 end 130 end
138 end 131 end
139 132
140 -- See below for global versions. 133 -- See below for global versions.
141 134
293 ]]):gsub('\t',' ') 286 ]]):gsub('\t',' ')
294 287
295 local function CreateDispatcher(argCount) 288 local function CreateDispatcher(argCount)
296 local ARGS = {} 289 local ARGS = {}
297 for i = 1, argCount do ARGS[i] = "arg"..i end 290 for i = 1, argCount do ARGS[i] = "arg"..i end
298 local code = template:gsub("ARGS", table.concat(ARGS, ", ")) 291 local code = template:gsub("ARGS", tconcat(ARGS, ", "))
299 return assert(loadstring(code, "LibF/safecall Dispatcher["..argCount.."]"))(xpcall, errorhandler) 292 return assert(loadstring(code, "LibF/safecall Dispatcher["..argCount.."]"))(xpcall, errorhandler)
300 end 293 end
301 294
302 local Dispatchers = setmetatable({ 295 local Dispatchers = setmetatable({
303 [0] = function(func) 296 [0] = function(func)