@@ -20,7 +20,11 @@ var logDumper = (function($, module){
2020 $table = $ ( '<table><caption>' + caption . escapeHtml ( ) + '</caption><thead><tr><th> </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