Skip to content

Commit 7d60edc

Browse files
committed
magic methods
1 parent a5b0e4e commit 7d60edc

1 file changed

Lines changed: 33 additions & 18 deletions

File tree

src/js/DumpObject.js

Lines changed: 33 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ var logDumper = (function($, module){
6868
) +
6969
dumpObjectProperties(abs, {'viaDebugInfo': abs.viaDebugInfo}) +
7070
(abs.collectMethods // outputMethods
71-
? dumpObjectMethods(abs.methods)
71+
? dumpObjectMethods(abs)
7272
: ''
7373
) +
7474
'</dl>';
@@ -136,8 +136,8 @@ var logDumper = (function($, module){
136136
}
137137
if (info.phpDoc) {
138138
if (typeof info.phpDoc.return != "undefined") {
139-
info.phpDoc.return[0].desc = atob(info.phpDoc.return[0].desc);
140-
info.phpDoc.return[0].type = atob(info.phpDoc.return[0].type);
139+
info.phpDoc.return.desc = atob(info.phpDoc.return.desc);
140+
info.phpDoc.return.type = atob(info.phpDoc.return.type);
141141
}
142142
info.phpDoc.summary = info.phpDoc.summary
143143
? atob(info.phpDoc.summary) : null;
@@ -172,7 +172,6 @@ var logDumper = (function($, module){
172172
}
173173

174174
function dumpObjectProperties(abs, meta) {
175-
176175
var html = '';
177176
var properties = abs.properties;
178177
var label = Object.keys(properties).length
@@ -182,17 +181,15 @@ var logDumper = (function($, module){
182181
label += ' <span class="text-muted">(via __debugInfo)</span>';
183182
}
184183
html = '<dt class="properties">' + label + '</dt>';
185-
if (abs.methods.__get) {
186-
html += '<dd class="magic-method info">This object has a <code>__get()</code> method</dd>' + "\n";
187-
}
184+
html += magicMethodInfo(abs, ['__get', '__set']);
188185
$.each(properties, function(k, info) {
189186
// console.info('property info', info);
190187
var viaDebugInfo = info.viaDebugInfo;
191188
var isPrivateAncestor = info['visibility'] == 'private' && info['inheritedFrom'];
192189
var $dd = $('<dd class="property">' +
193190
'<span class="t_modifier_'+info.visibility+'">' + info.visibility + '</span>' +
194191
(info.type
195-
? ' <span class="t_type">[' + info.type + ']</span>'
192+
? ' <span class="t_type">' + info.type + '</span>'
196193
: ''
197194
) +
198195
' <span class="property-name"' +
@@ -208,9 +205,6 @@ var logDumper = (function($, module){
208205
if (info.visibility != "debug") {
209206
$dd.addClass(info.visibility);
210207
}
211-
if (info.isMagic) {
212-
$dd.addClass('magic-property');
213-
}
214208
if (viaDebugInfo) {
215209
$dd.addClass("debug-value");
216210
}
@@ -222,12 +216,13 @@ var logDumper = (function($, module){
222216
return html;
223217
}
224218

225-
function dumpObjectMethods(methods) {
226-
var label = Object.keys(methods).length
219+
function dumpObjectMethods(abs) {
220+
var label = Object.keys(abs.methods).length
227221
? 'methods'
228222
: 'no methods';
229223
var html = '<dt class="methods">' + label + '</dt>';
230-
$.each(methods, function(k, info) {
224+
html += magicMethodInfo(abs, ['__call', '__callStatic']);
225+
$.each(abs.methods, function(k, info) {
231226
// console.info('method info', info);
232227
var paramStr = dumpMethodParams(info.params);
233228
var modifiers = [];
@@ -242,11 +237,11 @@ var logDumper = (function($, module){
242237
}
243238
if (typeof info.phpDoc.return != "undefined") {
244239
returnType = ' <span class="t_type"' +
245-
(info.phpDoc.return[0].desc !== null
246-
? ' title="' + info.phpDoc.return[0].desc.escapeHtml() + '"'
240+
(info.phpDoc.return.desc !== null
241+
? ' title="' + info.phpDoc.return.desc.escapeHtml() + '"'
247242
: ''
248243
) +
249-
'>' + info.phpDoc.return[0].type + '</span>';
244+
'>' + info.phpDoc.return.type + '</span>';
250245
}
251246
$dd = $('<dd class="method">' +
252247
modifiers.join(' ') +
@@ -292,7 +287,8 @@ var logDumper = (function($, module){
292287
defaultValue = defaultValue.replace("\n", " ");
293288
}
294289
html += ' <span class="t_operator">=</span> ';
295-
html += '<span class="t_parameter-default">' + module.dump(defaultValue, true, true, false) + '</span>';
290+
html += $(module.dump(defaultValue, true, true, false))
291+
.addClass('t_parameter-default')[0].outerHTML;
296292
}
297293
html += '</span>, '; // end .parameter
298294
});
@@ -302,6 +298,25 @@ var logDumper = (function($, module){
302298
return html;
303299
}
304300

301+
function magicMethodInfo(abs, methods) {
302+
var methodsHave = [],
303+
method;
304+
for (i = 0; i < methods.length; i++) {
305+
method = methods[i];
306+
if (abs.methods[method]) {
307+
methodsHave.push('<code>'+method+'</code>');
308+
}
309+
}
310+
if (methodsHave.length < 1) {
311+
return '';
312+
}
313+
methods = methodsHave.join(' and ');
314+
methods = methodsHave.length == 1
315+
? 'a ' + methods + ' method'
316+
: methods + ' methods';
317+
return '<dd class="magic info">This object has ' + methods + '</dd>';
318+
}
319+
305320
return module;
306321

307322
}(jQuery, logDumper || {}));

0 commit comments

Comments
 (0)