@@ -170,12 +170,30 @@ def print_variable(name, value, kind)
170
170
end
171
171
end
172
172
value_str = "[Binary Data]" if ( value_str . respond_to? ( 'is_binary_data?' ) && value_str . is_binary_data? )
173
- print ( "<variable name=\" %s\" kind=\" %s\" value=\" %s\" type=\" %s\" hasChildren=\" %s\" objectId=\" %#+x\" >" ,
174
- CGI . escapeHTML ( name ) , kind , CGI . escapeHTML ( value_str ) , value . class ,
173
+ compact_value_str = build_compact_name ( value_str , value )
174
+ print ( "<variable name=\" %s\" compactValue=\" %s\" kind=\" %s\" value=\" %s\" type=\" %s\" hasChildren=\" %s\" objectId=\" %#+x\" >" ,
175
+ CGI . escapeHTML ( name ) , CGI . escapeHTML ( compact_value_str ) , kind , CGI . escapeHTML ( value_str ) , value . class ,
175
176
has_children , value . respond_to? ( :object_id ) ? value . object_id : value . id )
176
177
print ( "<value><![CDATA[%s]]></value>" , CGI . escapeHTML ( value_str ) )
177
178
print ( '</variable>' )
178
179
end
180
+
181
+ def build_compact_name ( value_str , value )
182
+ compact = value_str
183
+ if value . is_a? ( Array )
184
+ slice = value [ 0 ..10 ]
185
+ compact = slice . inspect
186
+ if ( value . size != slice . size )
187
+ compact = compact [ 0 ..compact . size -2 ] + ", ...]"
188
+ end
189
+ end
190
+ if value . is_a? ( Hash )
191
+ slice = value . sort_by { |k , v | k } [ 0 ..5 ]
192
+ compact = slice . map { |kv | "#{ kv [ 0 ] } : #{ kv [ 1 ] } " } . join ( ", " )
193
+ compact = "{" + compact + ( slice . size != value . size ? ", ..." : "" ) + "}"
194
+ end
195
+ compact
196
+ end
179
197
180
198
def print_breakpoints ( breakpoints )
181
199
print_element 'breakpoints' do
0 commit comments