Class: Traceable::Args
- Inherits:
-
Object
- Object
- Traceable::Args
- Defined in:
- lib/traceable/args.rb
Constant Summary collapse
- MAX_STRING_LENGTH =
5000- TRUNC_STRING_LENGTH =
MAX_STRING_LENGTH - 3
- MAX_ARRAY_VALUES =
10- MAX_HASH_KEYS =
10
Class Method Summary collapse
-
.args_to_tags(parameters, values) ⇒ Object
parameters comes from calling method(:foo).parameters, so it is an array of parameter descriptors e.g.
- .format_array_of_values(val_array) ⇒ Object
- .format_hash_of_values(val_hash) ⇒ Object
- .format_string(val) ⇒ Object
- .format_value(val) ⇒ Object
- .truncated_array(val_array) ⇒ Object
- .truncated_hash(val_hash) ⇒ Object
Class Method Details
.args_to_tags(parameters, values) ⇒ Object
parameters comes from calling method(:foo).parameters, so it is an array of parameter descriptors e.g.
- [:req, :a], [:keyreq, :b
-
]
values is an array of values from an actual method invocation, so the two arrays are expected to match in length
10 11 12 13 14 15 16 |
# File 'lib/traceable/args.rb', line 10 def self.(parameters, values) = {} parameters.each_with_index do |param, i| [param[1]] = format_value(values[i]) end end |
.format_array_of_values(val_array) ⇒ Object
36 37 38 39 40 |
# File 'lib/traceable/args.rb', line 36 def self.format_array_of_values(val_array) return format_array_of_values(truncated_array(val_array)) \ if val_array.size > MAX_ARRAY_VALUES val_array.map { |v| format_value(v) } end |
.format_hash_of_values(val_hash) ⇒ Object
50 51 52 53 54 |
# File 'lib/traceable/args.rb', line 50 def self.format_hash_of_values(val_hash) return format_hash_of_values(truncated_hash(val_hash)) \ if val_hash.size > MAX_HASH_KEYS Hash[val_hash.map { |k, v| [k, format_value(v)] }] end |
.format_string(val) ⇒ Object
29 30 31 32 |
# File 'lib/traceable/args.rb', line 29 def self.format_string(val) return val[0..TRUNC_STRING_LENGTH] + '...' if val.size > MAX_STRING_LENGTH val end |
.format_value(val) ⇒ Object
18 19 20 21 22 23 24 |
# File 'lib/traceable/args.rb', line 18 def self.format_value(val) return val.to_trace if val.respond_to? :to_trace return format_array_of_values(val) if val.is_a? Array return format_hash_of_values(val) if val.is_a? Hash return format_string(val) if val.is_a? String val end |
.truncated_array(val_array) ⇒ Object
42 43 44 45 46 |
# File 'lib/traceable/args.rb', line 42 def self.truncated_array(val_array) subset = val_array[0..MAX_ARRAY_VALUES - 2] subset << "...(#{val_array.size - subset.size})" subset end |
.truncated_hash(val_hash) ⇒ Object
56 57 58 59 60 61 62 |
# File 'lib/traceable/args.rb', line 56 def self.truncated_hash(val_hash) first_keys = val_hash.keys[0..MAX_HASH_KEYS - 2] first_vals = first_keys.map { |k| val_hash[k] } first_keys << :___ first_vals << "...(#{val_hash.size - first_vals.size})" Hash[first_keys.zip(first_vals)] end |