@@ -71,24 +71,10 @@ module.exports = function inspect_ (obj, opts, depth, seen) {
71
71
}
72
72
if ( isArray ( obj ) ) {
73
73
if ( obj . length === 0 ) return '[]' ;
74
- var xs = Array ( obj . length ) ;
75
- for ( var i = 0 ; i < obj . length ; i ++ ) {
76
- xs [ i ] = has ( obj , i ) ? inspect ( obj [ i ] , obj ) : '' ;
77
- }
78
- return '[ ' + xs . join ( ', ' ) + ' ]' ;
74
+ return '[ ' + arrObjKeys ( obj , inspect ) . join ( ', ' ) + ' ]' ;
79
75
}
80
76
if ( isError ( obj ) ) {
81
- var parts = [ ] ;
82
- for ( var key in obj ) {
83
- if ( ! has ( obj , key ) ) continue ;
84
-
85
- if ( / [ ^ \w $ ] / . test ( key ) ) {
86
- parts . push ( inspect ( key ) + ': ' + inspect ( obj [ key ] ) ) ;
87
- }
88
- else {
89
- parts . push ( key + ': ' + inspect ( obj [ key ] ) ) ;
90
- }
91
- }
77
+ var parts = arrObjKeys ( obj , inspect ) ;
92
78
if ( parts . length === 0 ) return '[' + String ( obj ) + ']' ;
93
79
return '{ [' + String ( obj ) + '] ' + parts . join ( ', ' ) + ' }' ;
94
80
}
@@ -119,30 +105,13 @@ module.exports = function inspect_ (obj, opts, depth, seen) {
119
105
return markBoxed ( inspect ( String ( obj ) ) ) ;
120
106
}
121
107
if ( ! isDate ( obj ) && ! isRegExp ( obj ) ) {
122
- var xs = [ ] ;
123
- var keys = objectKeys ( obj ) ;
124
- keys . sort ( ) ;
125
- for ( var i = 0 ; i < keys . length ; i ++ ) {
126
- var key = keys [ i ] ;
127
- if ( / [ ^ \w $ ] / . test ( key ) ) {
128
- xs . push ( inspect ( key ) + ': ' + inspect ( obj [ key ] , obj ) ) ;
129
- }
130
- else xs . push ( key + ': ' + inspect ( obj [ key ] , obj ) ) ;
131
- }
108
+ var xs = arrObjKeys ( obj , inspect ) ;
132
109
if ( xs . length === 0 ) return '{}' ;
133
110
return '{ ' + xs . join ( ', ' ) + ' }' ;
134
111
}
135
112
return String ( obj ) ;
136
113
} ;
137
114
138
- function objectKeys ( obj ) {
139
- var keys = [ ] ;
140
- for ( var key in obj ) {
141
- if ( has ( obj , key ) ) keys . push ( key ) ;
142
- }
143
- return keys ;
144
- }
145
-
146
115
function quote ( s ) {
147
116
return String ( s ) . replace ( / " / g, '"' ) ;
148
117
}
@@ -227,6 +196,27 @@ function markBoxed (str) {
227
196
return 'Object(' + str + ')' ;
228
197
}
229
198
230
- function collectionOf ( type , size , entries ) {
199
+ function collectionOf ( type , size , entries ) {
231
200
return type + ' (' + size + ') {' + entries . join ( ', ' ) + '}' ;
232
201
}
202
+
203
+ function arrObjKeys ( obj , inspect ) {
204
+ var isArr = isArray ( obj ) ;
205
+ var xs = [ ] ;
206
+ if ( isArr ) {
207
+ xs . length = obj . length ;
208
+ for ( var i = 0 ; i < obj . length ; i ++ ) {
209
+ xs [ i ] = has ( obj , i ) ? inspect ( obj [ i ] , obj ) : '' ;
210
+ }
211
+ }
212
+ for ( var key in obj ) {
213
+ if ( ! has ( obj , key ) ) continue ;
214
+ if ( isArr && String ( Number ( key ) ) === key && key < obj . length ) continue ;
215
+ if ( / [ ^ \w $ ] / . test ( key ) ) {
216
+ xs . push ( inspect ( key , obj ) + ': ' + inspect ( obj [ key ] , obj ) ) ;
217
+ } else {
218
+ xs . push ( key + ': ' + inspect ( obj [ key ] , obj ) ) ;
219
+ }
220
+ }
221
+ return xs ;
222
+ }
0 commit comments