Mercurial > wow > reaction
comparison libs/AceDebug-2.0/AceDebug-2.0.lua @ 1:c11ca1d8ed91
Version 0.1
author | Flick <flickerstreak@gmail.com> |
---|---|
date | Tue, 20 Mar 2007 21:03:57 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
0:4e2ce2894c21 | 1:c11ca1d8ed91 |
---|---|
1 --[[ | |
2 Name: AceDebug-2.0 | |
3 Revision: $Rev: 18708 $ | |
4 Developed by: The Ace Development Team (http://www.wowace.com/index.php/The_Ace_Development_Team) | |
5 Inspired By: Ace 1.x by Turan (turan@gryphon.com) | |
6 Website: http://www.wowace.com/ | |
7 Documentation: http://www.wowace.com/index.php/AceDebug-2.0 | |
8 SVN: http://svn.wowace.com/root/trunk/Ace2/AceDebug-2.0 | |
9 Description: Mixin to allow for simple debugging capabilities. | |
10 Dependencies: AceLibrary, AceOO-2.0 | |
11 ]] | |
12 | |
13 local MAJOR_VERSION = "AceDebug-2.0" | |
14 local MINOR_VERSION = "$Revision: 18708 $" | |
15 | |
16 if not AceLibrary then error(MAJOR_VERSION .. " requires AceLibrary") end | |
17 if not AceLibrary:IsNewVersion(MAJOR_VERSION, MINOR_VERSION) then return end | |
18 | |
19 if not AceLibrary:HasInstance("AceOO-2.0") then error(MAJOR_VERSION .. " requires AceOO-2.0") end | |
20 | |
21 if GetLocale() == "frFR" then | |
22 DEBUGGING = "D\195\169boguage" | |
23 TOGGLE_DEBUGGING = "Activer/d\195\169sactiver le d\195\169boguage" | |
24 elseif GetLocale() == "deDE" then | |
25 DEBUGGING = "Debuggen" | |
26 TOGGLE_DEBUGGING = "Aktiviert/Deaktiviert Debugging" | |
27 elseif GetLocale() == "koKR" then | |
28 DEBUGGING = "디버깅" | |
29 TOGGLE_DEBUGGING = "디버깅 기능 사용함/사용안함" | |
30 elseif GetLocale() == "zhTW" then | |
31 DEBUGGING = "除錯" | |
32 TOGGLE_DEBUGGING = "啟用/停用除錯功能" | |
33 elseif GetLocale() == "zhCN" then | |
34 DEBUGGING = "\232\176\131\232\175\149" | |
35 TOGGLE_DEBUGGING = "\229\144\175\231\148\168/\231\166\129\231\148\168 \232\176\131\232\175\149" | |
36 else -- enUS | |
37 DEBUGGING = "Debugging" | |
38 TOGGLE_DEBUGGING = "Enable/disable debugging" | |
39 end | |
40 | |
41 local AceOO = AceLibrary:GetInstance("AceOO-2.0") | |
42 local AceDebug = AceOO.Mixin {"Debug", "CustomDebug", "IsDebugging", "SetDebugging", "SetDebugLevel", "LevelDebug", "CustomLevelDebug", "GetDebugLevel"} | |
43 | |
44 local function print(text, r, g, b, frame, delay) | |
45 (frame or DEFAULT_CHAT_FRAME):AddMessage(text, r, g, b, 1, delay or 5) | |
46 end | |
47 | |
48 local tmp = {} | |
49 | |
50 function AceDebug:CustomDebug(r, g, b, frame, delay, a1, ...) | |
51 if not self.debugging then | |
52 return | |
53 end | |
54 | |
55 local output = string.format("|cff7fff7f(DEBUG) %s:[%s.%3d]|r", tostring(self), date("%H:%M:%S"), math.fmod(GetTime(), 1) * 1000) | |
56 | |
57 a1 = tostring(a1) | |
58 if string.find(a1, "%%") and select('#', ...) >= 1 then | |
59 for i = 1, select('#', ...) do | |
60 tmp[i] = tostring((select(i, ...))) | |
61 end | |
62 output = output .. " " .. string.format(a1, unpack(tmp)) | |
63 for i = 1, select('#', ...) do | |
64 tmp[i] = nil | |
65 end | |
66 else | |
67 -- This block dynamically rebuilds the tmp array stopping on the first nil. | |
68 tmp[1] = output | |
69 tmp[2] = a1 | |
70 for i = 1, select('#', ...) do | |
71 tmp[i+2] = tostring((select(i, ...))) | |
72 end | |
73 | |
74 output = table.concat(tmp, " ") | |
75 | |
76 for i = 1, select('#', ...) + 2 do | |
77 tmp[i] = nil | |
78 end | |
79 end | |
80 | |
81 print(output, r, g, b, frame or self.debugFrame, delay) | |
82 end | |
83 | |
84 function AceDebug:Debug(...) | |
85 AceDebug.CustomDebug(self, nil, nil, nil, nil, nil, ...) | |
86 end | |
87 | |
88 function AceDebug:IsDebugging() | |
89 return self.debugging | |
90 end | |
91 | |
92 function AceDebug:SetDebugging(debugging) | |
93 self.debugging = debugging | |
94 end | |
95 | |
96 -- Takes a number 1-3 | |
97 -- Level 1: Critical messages that every user should receive | |
98 -- Level 2: Should be used for local debugging (function calls, etc) | |
99 -- Level 3: Very verbose debugging, will dump everything and anything | |
100 -- If set to nil, you will receive no debug information | |
101 function AceDebug:SetDebugLevel(level) | |
102 AceDebug:argCheck(level, 1, "number", "nil") | |
103 if not level then | |
104 self.debuglevel = nil | |
105 return | |
106 end | |
107 if level < 1 or level > 3 then | |
108 AceDebug:error("Bad argument #1 to `SetDebugLevel`, must be a number 1-3") | |
109 end | |
110 self.debuglevel = level | |
111 end | |
112 | |
113 function AceDebug:GetDebugLevel() | |
114 return self.debuglevel | |
115 end | |
116 | |
117 function AceDebug:CustomLevelDebug(level, r, g, b, frame, delay, ...) | |
118 if not self.debugging or not self.debuglevel then return end | |
119 AceDebug:argCheck(level, 1, "number") | |
120 if level < 1 or level > 3 then | |
121 AceDebug:error("Bad argument #1 to `LevelDebug`, must be a number 1-3") | |
122 end | |
123 if level > self.debuglevel then return end | |
124 | |
125 local output = string.format("|cff7fff7f(DEBUG) %s:[%s.%3d]|r", tostring(self), date("%H:%M:%S"), math.fmod(GetTime(), 1) * 1000) | |
126 | |
127 a1 = tostring(a1) | |
128 if string.find(a1, "%%") and select('#', ...) >= 2 then | |
129 for i = 1, select('#', ...) do | |
130 tmp[i] = tostring((select(i, ...))) | |
131 end | |
132 output = output .. " " .. string.format(a1, unpack(tmp)) | |
133 for i = 1, select('#', ...) do | |
134 tmp[i] = nil | |
135 end | |
136 else | |
137 -- This block dynamically rebuilds the tmp array stopping on the first nil. | |
138 tmp[1] = output | |
139 tmp[2] = a1 | |
140 for i = 1, select('#', ...) do | |
141 tmp[i+2] = tostring((select(i, ...))) | |
142 end | |
143 | |
144 output = table.concat(tmp, " ") | |
145 | |
146 for i = 1, select('#', ...) + 2 do | |
147 tmp[i] = nil | |
148 end | |
149 end | |
150 | |
151 print(output, r, g, b, frame or self.debugFrame, delay) | |
152 end | |
153 | |
154 function AceDebug:LevelDebug(level, ...) | |
155 if not self.debugging or not self.debuglevel then return end | |
156 AceDebug:argCheck(level, 1, "number") | |
157 if level < 1 or level > 3 then | |
158 AceDebug:error("Bad argument #1 to `LevelDebug`, must be a number 1-3") | |
159 end | |
160 if level > self.debuglevel then return end | |
161 | |
162 AceDebug.CustomLevelDebug(self, level, nil, nil, nil, nil, nil, ...) | |
163 end | |
164 | |
165 | |
166 local options | |
167 function AceDebug:GetAceOptionsDataTable(target) | |
168 if not options then | |
169 options = { | |
170 debug = { | |
171 name = DEBUGGING, | |
172 desc = TOGGLE_DEBUGGING, | |
173 type = "toggle", | |
174 get = "IsDebugging", | |
175 set = "SetDebugging", | |
176 order = -2, | |
177 } | |
178 } | |
179 end | |
180 return options | |
181 end | |
182 | |
183 AceLibrary:Register(AceDebug, MAJOR_VERSION, MINOR_VERSION, AceDebug.activate) | |
184 AceDebug = AceLibrary(MAJOR_VERSION) |