Skip to content

Commit 99260f8

Browse files
committed
table method love
1 parent 3de38da commit 99260f8

3 files changed

Lines changed: 78 additions & 36 deletions

File tree

src/js/DumpObject.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,9 @@ var logDumper = (function($, module){
110110
var props = ["className","debug","extends","implements","type"],
111111
prop,
112112
i;
113+
if (abs.debug === module.ABSTRACTION) {
114+
return;
115+
}
113116
for (i = 0; i < props.length; i++) {
114117
prop = props[i];
115118
if (typeof abs[prop] == "string") {

src/js/LogDumper.js

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -190,11 +190,13 @@ var logDumper = (function($, module) {
190190
}
191191
if (typeof val == "object") { // already checked for null
192192
// console.log('val', val);
193-
var debug = typeof val.debug == "string" ? atob(val.debug) : val.debug;
194-
type = typeof val.type == "string" ? atob(val.type) : val.type;
195-
if (typeof debug == "undefined" || debug !== ABSTRACTION) {
196-
// plain ol associative array
197-
type = "array";
193+
type = "array";
194+
if (typeof val.debug == "string") {
195+
if (val.debug === ABSTRACTION) {
196+
type = val.type;
197+
} else if (atob(val.debug) == ABSTRACTION) {
198+
type = atob(val.type);
199+
}
198200
}
199201
return type;
200202
}

src/js/MethodTable.js

Lines changed: 68 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,11 @@ var logDumper = (function($, module){
2020
$table = $('<table><caption>'+caption.escapeHtml()+'</caption><thead><tr><th>&nbsp;</th></tr></thead></table>')
2121
.addClass(classname);
2222
for (keyi = 0, colLength = colKeys.length; keyi < colLength; keyi++) {
23-
$table.find('thead tr').append('<th scope="col">'+module.dump(colKeys[keyi], true, false, false)+'</th>');
23+
var val = colKeys[keyi];
24+
if (val === '') {
25+
val = 'value';
26+
}
27+
$table.find('thead tr').append('<th scope="col">'+module.dump(val, true, false, false)+'</th>');
2428
}
2529
for (keyi = 0, rowLength = keys.length; keyi < rowLength; keyi++) {
2630
key = keys[keyi];
@@ -39,10 +43,13 @@ var logDumper = (function($, module){
3943
classname = /^\d+$/.test(key) ? 't_int' : classAndInner.lass;
4044
$tr = $('<tr><th scope="row" class="t_key '+classname+'">'+classAndInner.innerhtml+'</th></tr>');
4145
if (row.debug == module.ABSTRACTION && row.type == "object") {
42-
haveObj = true;
43-
$tr.append(module.markupClassname(row.className, 'td', {
44-
title: row.phpDoc.summary ? row.phpDoc.summary : null
45-
}));
46+
var isStringified = row.stringified && row.stringified.length || typeof row.methods.__toString !== "undefined";
47+
if (!isStringified && row.className != 'Closure') {
48+
haveObj = true;
49+
$tr.append(module.markupClassname(row.className, 'td', {
50+
title: row.phpDoc.summary ? row.phpDoc.summary : null
51+
}));
52+
}
4653
}
4754
values = getValues(row, colKeys);
4855
for (vali = 0, colLength = values.length; vali < colLength; vali++) {
@@ -60,17 +67,26 @@ var logDumper = (function($, module){
6067

6168
function getTableKeys(obj) {
6269
var i, key,
70+
isAbstraction,
6371
keys = [],
6472
row = {};
6573
delete obj['__debug_key_order__'];
6674
for (i in obj) {
6775
row = obj[i];
68-
if (typeof row == "object" && typeof row.debug == "string" && atob(row.debug) == module.ABSTRACTION) {
76+
isAbstraction = typeof row == "object" && typeof row.debug == "string" && atob(row.debug) == module.ABSTRACTION;
77+
if (isAbstraction) {
6978
// abstraction
70-
if (atob(row.type) == "object") {
71-
module.base64DecodeObj(row);
72-
if (row.implements.indexOf("Traversable") > -1) {
79+
module.base64DecodeObj(row);
80+
if (row.type == "object") {
81+
if (typeof row.traverseValues !== "undefined" && Object.keys(row.traverseValues).length) {
82+
row = row.traverseValues;
83+
} else if (typeof row.values !== "undefined" && Object.keys(row.values).length) {
84+
// pre 2.1
7385
row = row.values;
86+
} else if (row.stringified && row.stringified.length) {
87+
row = null;
88+
} else if (typeof row.methods.__toString !== "undefined") {
89+
row = null;
7490
} else {
7591
row = row.properties;
7692
for (key in row) {
@@ -80,9 +96,13 @@ var logDumper = (function($, module){
8096
}
8197
}
8298
} else {
99+
// ie callable or resource
83100
row = null;
84101
}
85102
}
103+
if (typeof row != "object") {
104+
row = {'':null};
105+
}
86106
for (key in row) {
87107
if (keys.indexOf(key) < 0) {
88108
keys.push(key);
@@ -99,35 +119,52 @@ var logDumper = (function($, module){
99119
var rowIsObject = rowIsAbstraction && (row.type == "object" || atob(row.type) == "object");
100120
*/
101121
// var type = module.getType(row);
102-
var type = typeof row.debug == "string" && row.debug == module.ABSTRACTION ? row.type : "array";
103-
var isTraversable = false;
122+
var isAbstraction = typeof row.debug == "string" && row.debug == module.ABSTRACTION;
123+
var type = isAbstraction ? row.type : "array";
104124
var i, k, length, info, values = [], value;
105-
if (type == "object") {
106-
// module.base64DecodeObj(row);
107-
isTraversable = row.implements.indexOf('Traversable') > -1 && typeof row.values != "undefined";
108-
if (isTraversable) {
109-
row = row.values;
110-
} else {
111-
for (k in row.properties) {
112-
info = row.properties[k];
113-
if (info.visibility !== 'public') {
114-
delete row.properties[k];
115-
} else {
116-
row.properties[k] = info.value;
125+
if (isAbstraction) {
126+
if (type == "object") {
127+
if (typeof row.traverseValues && Object.keys(row.traverseValues).length) {
128+
row = row.traverseValues;
129+
} else if (typeof row.values !== "undefined" && Object.keys(row.values).length) {
130+
// pre 2.1
131+
row = row.values;
132+
} else if (row.stringified && row.stringified.length) {
133+
row = row.stringified;
134+
} else if (typeof row.methods.__toString !== "undefined") {
135+
row = row.methods.__toString.returnValue;
136+
} else if (row.className == 'Closure') {
137+
row = {'':row};
138+
} else {
139+
for (k in row.properties) {
140+
info = row.properties[k];
141+
if (info.visibility !== 'public') {
142+
delete row.properties[k];
143+
} else {
144+
row.properties[k] = info.value;
145+
}
117146
}
147+
row = row.properties;
118148
}
119-
row = row.properties;
149+
} else {
150+
row = {'':row};
120151
}
121152
}
153+
if (typeof row !== "object") {
154+
row = {'':row};
155+
}
122156
for (i = 0, length = keys.length; i < length; i++) {
123157
k = keys[i];
124-
value = module.UNDEFINED;
125-
if (typeof row === "object") {
126-
if (typeof row[k] !== "undefined") {
127-
value = row[k];
158+
value = typeof row[k] !== "undefined"
159+
? row[k]
160+
: module.UNDEFINED;
161+
isAbstraction = typeof value == "object" && typeof value.debug == "string" && value.debug == module.ABSTRACTION;
162+
if (isAbstraction && value.type == "object") {
163+
if (value.stringified && value.stringified.length) {
164+
value = value.stringified;
165+
} else if (typeof value.methods.__toString !== "undefined") {
166+
value = value.methods.__toString.returnValue;
128167
}
129-
} else if (k === '') {
130-
value = row;
131168
}
132169
values.push(value);
133170
}
@@ -148,6 +185,6 @@ var logDumper = (function($, module){
148185
};
149186
}
150187

151-
return module;
188+
return module;
152189

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

0 commit comments

Comments
 (0)