class Sqreen::Util::Capper
Attributes
depth_cap[R]
size_cap[R]
string_size_cap[R]
Public Class Methods
new(opts = {})
click to toggle source
# File lib/sqreen/util/capper.rb, line 14 def initialize(opts = {}) string_size_cap = opts[:string_size_cap] || 4096 size_cap = opts[:size_cap] || 150 depth_cap = opts[:depth_cap] || 10 flat_size_cap = opts[:flat_size_cap] || 10000 @string_size_cap = string_size_cap @size_cap = size_cap @depth_cap = depth_cap @flat_size_cap = flat_size_cap end
Public Instance Methods
call(e)
click to toggle source
# File lib/sqreen/util/capper.rb, line 26 def call(e) r_call(e).first end
Private Instance Methods
r_call(e, opts = {})
click to toggle source
# File lib/sqreen/util/capper.rb, line 32 def r_call(e, opts = {}) size = opts[:size] || @flat_size_cap depth = opts[:depth] || @depth_cap case e when Hash h = Sqreen::Util::CappedHash.new(size_cap: size_cap, depth_cap: depth) e.each do |k, v| break unless size > 0 k_capped, = r_call(k, size: size, depth: depth - 1) v_capped, s = r_call(v, size: size, depth: depth - 1) size -= s h[k_capped] = v_capped end [h, h.size] when Array a = Sqreen::Util::CappedArray.new(size_cap: size_cap, depth_cap: depth) e.each do |v| break unless size > 0 c, s = r_call(v, size: size, depth: depth - 1) a << c size -= s end [a, a.size] when String return unless size > 0 size -= 1 s = Sqreen::Util::CappedString.new(size_cap: string_size_cap) << e [s, 1] else return unless size > 0 size -= 1 [e, 1] end end