11var logDumper = ( function ( $ , module ) {
22
3+ var colClasses = { } ;
4+
35 module . methodTable = function ( rows , caption , columns , classname ) {
46 // console.log('methodTable', rows);
57 var classAndInner ,
68 haveObj = false ,
7- keyi ,
8- keys = rows [ '__debug_key_order__' ] || Object . keys ( rows ) ,
9- key ,
10- colKeys = columns . length ? columns : getTableKeys ( rows ) ,
9+ i , i2 ,
10+ rowKeys = [ ] ,
11+ rowKey ,
12+ colKeys = [ ] ,
13+ colKey ,
1114 rowLength ,
1215 colLength ,
1316 row ,
@@ -16,33 +19,48 @@ var logDumper = (function($, module){
1619 if ( classname === undefined ) {
1720 classname = "table-bordered" ;
1821 }
19- delete rows [ '__debug_key_order__' ] ;
2022 $table = $ ( '<table><caption>' + caption . escapeHtml ( ) + '</caption><thead><tr><th> </th></tr></thead></table>' )
2123 . addClass ( classname ) ;
22- for ( keyi = 0 , colLength = colKeys . length ; keyi < colLength ; keyi ++ ) {
23- var val = colKeys [ keyi ] ;
24- if ( val === '' ) {
25- val = 'value' ;
24+ if ( isAbstraction ( rows ) ) {
25+ if ( atob ( rows . type ) == "object" ) {
26+ $table . find ( 'caption' ) . append ( ' ' + module . markupClassname ( atob ( rows . className ) ) ) ;
27+ }
28+ if ( Object . keys ( rows . traverseValues ) . length ) {
29+ rows = rows . traverseValues ;
30+ }
31+ }
32+ rowKeys = rows [ '__debug_key_order__' ] || Object . keys ( rows ) ;
33+ colKeys = columns . length ? columns : getTableKeys ( rows ) ;
34+
35+ colClasses = { } ;
36+ for ( i = 0 , colLength = colKeys . length ; i < colLength ; i ++ ) {
37+ colKey = colKeys [ i ] ;
38+ if ( colKey === '' ) {
39+ colKey = 'value' ;
2640 }
27- $table . find ( 'thead tr' ) . append ( '<th scope="col">' + module . dump ( val , true , false , false ) + '</th>' ) ;
41+ colClasses [ colKey ] = null ;
42+ $table . find ( 'thead tr' ) . append (
43+ '<th scope="col">' + module . dump ( colKey , true , false , false ) + '</th>'
44+ ) ;
2845 }
29- for ( keyi = 0 , rowLength = keys . length ; keyi < rowLength ; keyi ++ ) {
30- key = keys [ keyi ] ;
31- row = rows [ key ] ;
46+ delete rows [ '__debug_key_order__' ] ;
47+ for ( i = 0 , rowLength = rowKeys . length ; i < rowLength ; i ++ ) {
48+ rowKey = rowKeys [ i ] ;
49+ row = rows [ rowKey ] ;
3250 if ( columns . length > 0 ) {
3351 // getTableKeys not called... need to base64decode
3452 module . base64DecodeObj ( row ) ;
3553 }
3654 // using for in, so every key will be a string
3755 // check if actually an integer
38- if ( typeof key == "string" && key . match ( / ^ \d + $ / ) && Number . isSafeInteger ( key ) ) {
39- key = parseInt ( key , 10 ) ;
56+ if ( typeof rowKey == "string" && rowKey . match ( / ^ \d + $ / ) && Number . isSafeInteger ( rowKey ) ) {
57+ rowKey = parseInt ( rowKey , 10 ) ;
4058 }
4159 // console.log('row', row);
42- classAndInner = parseAttribString ( module . dump ( key , true , true , false ) ) ;
43- classname = / ^ \d + $ / . test ( key ) ? 't_int' : classAndInner . lass ;
60+ classAndInner = parseAttribString ( module . dump ( rowKey , true , true , false ) ) ;
61+ classname = / ^ \d + $ / . test ( rowKey ) ? 't_int' : classAndInner . class ;
4462 $tr = $ ( '<tr><th scope="row" class="t_key ' + classname + '">' + classAndInner . innerhtml + '</th></tr>' ) ;
45- if ( row . debug == module . ABSTRACTION && row . type == "object" ) {
63+ if ( isAbstraction ( row ) && row . type == "object" ) {
4664 var isStringified = row . stringified && row . stringified . length || typeof row . methods . __toString !== "undefined" ;
4765 if ( ! isStringified && row . className != 'Closure' ) {
4866 haveObj = true ;
@@ -52,29 +70,47 @@ var logDumper = (function($, module){
5270 }
5371 }
5472 values = getValues ( row , colKeys ) ;
55- for ( vali = 0 , colLength = values . length ; vali < colLength ; vali ++ ) {
56- // key = colKeys[keyi];
57- classAndInner = parseAttribString ( module . dump ( values [ vali ] , true ) ) ;
73+ for ( i2 = 0 , colLength = values . length ; i2 < colLength ; i2 ++ ) {
74+ classAndInner = parseAttribString ( module . dump ( values [ i2 ] , true ) ) ;
5875 $tr . append ( '<td class="' + classAndInner . class + '">' + classAndInner . innerhtml + '</td>' ) ;
5976 }
6077 $table . append ( $tr ) ;
6178 }
79+ for ( colKey in colClasses ) {
80+ if ( ! colClasses [ colKey ] ) {
81+ continue ;
82+ }
83+ $table . find ( 'thead tr th' ) . each ( function ( ) {
84+ if ( $ ( this ) . text ( ) === colKey ) {
85+ var classname = atob ( colClasses [ colKey ] ) ;
86+ $ ( this ) . append ( ' ' + module . markupClassname ( classname ) ) ;
87+ return false ;
88+ }
89+ } ) ;
90+ }
6291 if ( haveObj ) {
6392 $table . find ( 'thead tr > *' ) . eq ( 0 ) . after ( "<th> </th>" ) ;
6493 }
6594 return $table ;
6695 } ;
6796
97+ function isAbstraction ( val ) {
98+ return val
99+ && typeof val == "object"
100+ && typeof val . debug == "string"
101+ && ( val . debug === module . ABSTRACTION || atob ( val . debug ) === module . ABSTRACTION ) ;
102+ }
103+
68104 function getTableKeys ( obj ) {
69105 var i , key ,
70- isAbstraction ,
106+ isAbs ,
71107 keys = [ ] ,
72108 row = { } ;
73109 delete obj [ '__debug_key_order__' ] ;
74110 for ( i in obj ) {
75111 row = obj [ i ] ;
76- isAbstraction = typeof row == "object" && typeof row . debug == "string" && atob ( row . debug ) == module . ABSTRACTION ;
77- if ( isAbstraction ) {
112+ isAbs = isAbstraction ( row ) ;
113+ if ( isAbs ) {
78114 // abstraction
79115 module . base64DecodeObj ( row ) ;
80116 if ( row . type == "object" ) {
@@ -113,16 +149,10 @@ var logDumper = (function($, module){
113149 }
114150
115151 function getValues ( row , keys ) {
116- /*
117- var isAbstraction = typeof row == "object" &&
118- (row.debug === module.ABSTRACTION || atob(row.debug) == module.ABSTRACTION);
119- var rowIsObject = rowIsAbstraction && (row.type == "object" || atob(row.type) == "object");
120- */
121- // var type = module.getType(row);
122- var isAbstraction = typeof row . debug == "string" && row . debug == module . ABSTRACTION ;
123- var type = isAbstraction ? row . type : "array" ;
152+ var isAbs = isAbstraction ( row ) ;
153+ var type = isAbs ? row . type : "array" ;
124154 var i , k , length , info , values = [ ] , value ;
125- if ( isAbstraction ) {
155+ if ( isAbs ) {
126156 if ( type == "object" ) {
127157 if ( typeof row . traverseValues && Object . keys ( row . traverseValues ) . length ) {
128158 row = row . traverseValues ;
@@ -160,10 +190,18 @@ var logDumper = (function($, module){
160190 : module . UNDEFINED ;
161191 if ( module . getType ( value ) == "object" ) {
162192 if ( value . stringified && value . stringified . length ) {
193+ colClasses [ k ] = colClasses [ k ] === null || colClasses [ k ] == value . className
194+ ? value . className
195+ : false ;
163196 value = value . stringified ;
164197 } else if ( typeof value . methods . __toString !== "undefined" ) {
198+ colClasses [ k ] = colClasses [ k ] === null || colClasses [ k ] == value . className
199+ ? value . className
200+ : false ;
165201 value = value . methods . __toString . returnValue ;
166202 }
203+ } else if ( value !== module . UNDEFINED && value !== null ) {
204+ colClasses [ k ] = false ;
167205 }
168206 values . push ( value ) ;
169207 }
0 commit comments