module DebugLogging::ArgumentPrinter
Public Instance Methods
debug_benchmark_to_s(tms:)
click to toggle source
# File lib/debug_logging/argument_printer.rb, line 5 def debug_benchmark_to_s(tms:) "completed in #{format('%f', tms.real)}s (#{format('%f', tms.total)}s CPU)" end
debug_event_name_to_s(method_to_notify: nil)
click to toggle source
# File lib/debug_logging/argument_printer.rb, line 185 def debug_event_name_to_s(method_to_notify: nil) "#{method_to_notify}.log" end
debug_invocation_id_to_s(args: nil, config_proxy: nil)
click to toggle source
# File lib/debug_logging/argument_printer.rb, line 9 def debug_invocation_id_to_s(args: nil, config_proxy: nil) return '' unless args && config_proxy if config_proxy.debug_add_invocation_id invocation = " ~#{args.object_id}@#{(Time.now.to_f.to_s % '%#-21a')[4..-4]}~" case config_proxy.debug_add_invocation_id when true invocation else config_proxy.debug_add_invocation_id.call(ColorizedString[invocation]) end else '' end end
debug_invocation_to_s(klass: nil, separator: nil, method_to_log: nil, config_proxy: nil)
click to toggle source
# File lib/debug_logging/argument_printer.rb, line 25 def debug_invocation_to_s(klass: nil, separator: nil, method_to_log: nil, config_proxy: nil) return '' unless config_proxy klass_string = if config_proxy.debug_colorized_chain_for_class config_proxy.debug_colorized_chain_for_class.call(ColorizedString[klass.to_s]) else klass.to_s end method_string = if config_proxy.debug_colorized_chain_for_method config_proxy.debug_colorized_chain_for_method.call(ColorizedString[method_to_log.to_s]) else method_to_log.to_s end "#{klass_string}#{separator}#{method_string}" end
debug_payload_to_s(payload: nil, config_proxy: nil)
click to toggle source
# File lib/debug_logging/argument_printer.rb, line 159 def debug_payload_to_s(payload: nil, config_proxy: nil) return '' unless payload && config_proxy if payload case config_proxy.debug_add_payload when true payload.inspect else printed_payload = "" printed, add_payload_ellipsis = debug_safe_proc( proc_name: "add_payload", proc: config_proxy.debug_add_payload, args: payload, max_length: config_proxy.payload_max_length ) printed_payload += printed printed_payload += config_proxy.debug_ellipsis if add_payload_ellipsis printed_payload end else '' end end
debug_safe_proc(proc_name:, proc:, args:, max_length:)
click to toggle source
# File lib/debug_logging/argument_printer.rb, line 146 def debug_safe_proc(proc_name:, proc:, args:, max_length:) max_length ||= 1000 # can't be nil begin add_ellipsis = false printed = String(proc.call(args)).tap do |x| add_ellipsis = x.length > max_length end[0..(max_length)] return printed, add_ellipsis rescue => e return "#{e.class}: #{e.message}\nPlease check that your #{proc_name} is able to handle #{args}", false end end
debug_signature_to_s(args: nil, config_proxy: nil)
click to toggle source
# File lib/debug_logging/argument_printer.rb, line 41 def debug_signature_to_s(args: nil, config_proxy: nil) # rubocop:disable Metrics/CyclomaticComplexity return '' unless args && config_proxy printed_args = '' add_args_ellipsis = false if config_proxy.debug_last_hash_to_s_proc && args[-1].is_a?(Hash) add_other_args_ellipsis = false if args.length > 1 if config_proxy.debug_multiple_last_hashes last_hash_args, other_args = args.partition do |arg| arg.is_a?(Hash) end other_args_string = if config_proxy.debug_args_to_s_proc printed, add_other_args_ellipsis = debug_safe_proc( proc_name:'args_to_s_proc', proc: config_proxy.debug_args_to_s_proc, args: other_args, max_length: config_proxy.debug_args_max_length ) printed else other_args.map(&:inspect).join(', ').tap do |x| add_other_args_ellipsis = x.length > config_proxy.debug_args_max_length end[0..(config_proxy.debug_args_max_length)] end other_args_string += config_proxy.debug_ellipsis if add_other_args_ellipsis # On the debug_multiple_last_hashes truthy branch we don't print the ellipsis after regular args # because it will go instead after each of the last hashes (if needed) # ...join(", ").tap {|x| _add_args_ellipsis = x.length > config_proxy.debug_args_max_length} last_hash_args_string = last_hash_args.map do |arg| arr = [] printed, add_last_hash_ellipsis = debug_safe_proc( proc_name:'last_hash_to_s_proc', proc: config_proxy.debug_last_hash_to_s_proc, args: arg, max_length: config_proxy.debug_last_hash_max_length ) printed += config_proxy.debug_ellipsis if add_last_hash_ellipsis arr << printed arr end.flatten.join(', ') printed_args += other_args_string if other_args_string printed_args += ', ' if !other_args_string.empty? && !last_hash_args_string.empty? printed_args += last_hash_args_string if last_hash_args_string && !last_hash_args_string.empty? else other_args = args[0..-2] other_args_string = if config_proxy.debug_args_to_s_proc printed, add_other_args_ellipsis = debug_safe_proc( proc_name:'args_to_s_proc', proc: config_proxy.debug_args_to_s_proc, args: other_args, max_length: config_proxy.debug_args_max_length ) printed else other_args.map(&:inspect).join(', ').tap do |x| add_other_args_ellipsis = x.length > config_proxy.debug_args_max_length end[0..(config_proxy.debug_args_max_length)] end other_args_string += config_proxy.debug_ellipsis if add_other_args_ellipsis printed_args += other_args_string printed, add_last_hash_ellipsis = debug_safe_proc( proc_name:'last_hash_to_s_proc', proc: config_proxy.debug_last_hash_to_s_proc, args: args[-1], max_length: config_proxy.debug_last_hash_max_length ) printed_args += ", #{printed}" printed_args += config_proxy.debug_ellipsis if add_last_hash_ellipsis end else printed, add_last_hash_ellipsis = debug_safe_proc( proc_name:'last_hash_to_s_proc', proc: config_proxy.debug_last_hash_to_s_proc, args: args[0], max_length: config_proxy.debug_last_hash_max_length ) printed_args += printed printed_args += config_proxy.debug_ellipsis if add_last_hash_ellipsis end else printed_args += if config_proxy.debug_args_to_s_proc printed, add_args_ellipsis = debug_safe_proc( proc_name:'args_to_s_proc', proc: config_proxy.debug_args_to_s_proc, args: args, max_length: config_proxy.debug_args_max_length ) printed elsif args.length == 1 && args[0].is_a?(Hash) # handle double splat ("**#{args.map(&:inspect).join(', ').tap do |x| add_args_ellipsis = x.length > config_proxy.debug_args_max_length end }")[0..(config_proxy.debug_args_max_length)] else args.map(&:inspect).join(', ').tap do |x| add_args_ellipsis = x.length > config_proxy.debug_args_max_length end[0..(config_proxy.debug_args_max_length)] end printed_args += config_proxy.debug_ellipsis if add_args_ellipsis end "(#{printed_args})" end