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
store(key, value)
Alias for: []=
update(h)
Alias for: merge!

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