@@ -20,7 +20,9 @@ def next_id_counter
2020 MethodEventStruct = Struct . new ( :id , :event , :thread_id )
2121
2222 class MethodEvent < MethodEventStruct
23- LIMIT = 100
23+ MAX_ARRAY_ENUMERATION = 10
24+ MAX_HASH_ENUMERATION = 10
25+ MAX_STRING_LENGTH = 100
2426
2527 class << self
2628 def build_from_invocation ( event_type , event :)
@@ -48,14 +50,14 @@ def display_string(value)
4850 end
4951
5052 start = Time . now
51- value_string = custom_display_string ( value ) || default_display_string ( value )
53+ value_string , final = custom_display_string ( value ) || default_display_string ( value )
5254
5355 if @times
5456 elapsed = Time . now - start
5557 @times [ best_class_name ( value ) ] += elapsed
5658 end
5759
58- encode_display_string ( value_string )
60+ final ? value_string : encode_display_string ( value_string )
5961 end
6062
6163 def object_properties ( hash_like )
@@ -80,21 +82,33 @@ def best_class_name(value)
8082 end
8183
8284 def encode_display_string ( value )
83- ( value ||'' ) [ 0 ...LIMIT ] . encode ( 'utf-8' , invalid : :replace , undef : :replace , replace : '_' )
85+ ( value ||'' ) [ 0 ...MAX_STRING_LENGTH ] . encode ( 'utf-8' , invalid : :replace , undef : :replace , replace : '_' )
8486 end
8587
8688 def custom_display_string ( value )
8789 case value
8890 when NilClass , TrueClass , FalseClass , Numeric , Time , Date
89- value . to_s
91+ [ value . to_s , true ]
92+ when Symbol
93+ [ ":#{ value } " , true ]
9094 when String
91- value [ 0 ...LIMIT ] . encode ( 'utf-8' , invalid : :replace , undef : :replace , replace : '_' )
95+ result = value [ 0 ...MAX_STRING_LENGTH ] . encode ( 'utf-8' , invalid : :replace , undef : :replace , replace : '_' )
96+ result << " (...#{ value . length - MAX_STRING_LENGTH } more characters)" if value . length > MAX_STRING_LENGTH
97+ [ result , true ]
98+ when Array
99+ result = value [ 0 ...MAX_ARRAY_ENUMERATION ] . map { |v | display_string ( v ) } . join ( ', ' )
100+ result << " (...#{ value . length - MAX_ARRAY_ENUMERATION } more items)" if value . length > MAX_ARRAY_ENUMERATION
101+ [ [ '[' , result , ']' ] . join , true ]
102+ when Hash
103+ result = value . keys [ 0 ...MAX_HASH_ENUMERATION ] . map { |key | "#{ display_string ( key ) } =>#{ display_string ( value [ key ] ) } " } . join ( ', ' )
104+ result << " (...#{ value . size - MAX_HASH_ENUMERATION } more entries)" if value . size > MAX_HASH_ENUMERATION
105+ [ [ '{' , result , '}' ] . join , true ]
92106 when File
93- "#{ value . class } [path=#{ value . path } ]"
107+ [ "#{ value . class } [path=#{ value . path } ]" , true ]
94108 when Net ::HTTP
95- "#{ value . class } [#{ value . address } :#{ value . port } ]"
109+ [ "#{ value . class } [#{ value . address } :#{ value . port } ]" , true ]
96110 when Net ::HTTPGenericRequest
97- "#{ value . class } [#{ value . method } #{ value . path } ]"
111+ [ "#{ value . class } [#{ value . method } #{ value . path } ]" , true ]
98112 end
99113 rescue StandardError
100114 nil
0 commit comments