class Honeybadger::Util::Sanitizer
def sanitize(data, depth = 0, stack = nil, parents = [])
Experimental RBS support (using type sampling data from the type_fusion project).
type Honeybadger__Util__Sanitizer_sanitize_data = Hash | Float | String | nil | true type Honeybadger__Util__Sanitizer_sanitize_return_value = String | nil | true | Float def sanitize: (Honeybadger__Util__Sanitizer_sanitize_data data, ?Integer depth, ?Set? stack, ?(Array[Symbol] | Array[]) parents) -> Honeybadger__Util__Sanitizer_sanitize_return_value
This signature was generated using 523 samples from 1 application.
def sanitize(data, depth = 0, stack = nil, parents = []) return BASIC_OBJECT if basic_object?(data) if recursive?(data) return RECURSION if stack && stack.include?(data.object_id) stack = stack ? stack.dup : Set.new stack << data.object_id end case data when Hash return DEPTH if depth >= max_depth hash = data.to_hash new_hash = {} hash.each_pair do |key, value| parents.push(key) if deep_regexps key = key.kind_of?(Symbol) ? key : sanitize(key, depth+1, stack, parents) if filter_key?(key, parents) new_hash[key] = FILTERED else value = sanitize(value, depth+1, stack, parents) if blocks.any? && !recursive?(value) key = key.dup if can_dup?(key) value = value.dup if can_dup?(value) blocks.each { |b| b.call(key, value) } end new_hash[key] = value end parents.pop if deep_regexps end new_hash when Array, Set return DEPTH if depth >= max_depth data.to_a.map do |value| sanitize(value, depth+1, stack, parents) end when Numeric, TrueClass, FalseClass, NilClass data when String sanitize_string(data) when -> (d) { d.respond_to?(:to_honeybadger) } return DEPTH if depth >= max_depth begin data = data.to_honeybadger rescue return RAISED end sanitize(data, depth+1, stack, parents) else # all other objects klass = data.class begin data = String(data) rescue return RAISED end return "#<#{klass.name}>" if inspected?(data) sanitize_string(data) end end