class Sqreen::Util::CappedHash
Attributes
depth_cap[R]
size_cap[R]
Public Class Methods
new(*args, &block)
click to toggle source
Calls superclass method
# File lib/sqreen/util/capped_hash.rb, line 11 def initialize(*args, &block) opts = args.last.is_a?(Hash) ? args.pop : {} size_cap = opts[:size_cap] || 150 depth_cap = opts[:depth_cap] || 10 @size_cap = size_cap @depth_cap = depth_cap super(*args, &block) end
Public Instance Methods
[]=(key, value)
click to toggle source
Calls superclass method
# File lib/sqreen/util/capped_hash.rb, line 21 def []=(key, value) super if key?(key) || keep?(value) end
Also aliased as: store
merge!(h) { |k, self, v| ... }
click to toggle source
# File lib/sqreen/util/capped_hash.rb, line 26 def merge!(h) h.each { |k, v| self[k] = block_given? ? yield(k, self[k], v) : v } end
Also aliased as: update
replace(h)
click to toggle source
# File lib/sqreen/util/capped_hash.rb, line 31 def replace(h) keep_if { false } merge!(h) end
Private Instance Methods
keep?(value)
click to toggle source
# File lib/sqreen/util/capped_hash.rb, line 38 def keep?(value) size < size_cap && (depth_cap > 0 || !value.is_a?(Hash) && !value.is_a?(Array)) end