Sha256: 272adff8eb4c2c47113688de53fb58429482db8caf881f1200c0f9fe4f6ca0c8
Contents?: true
Size: 900 Bytes
Versions: 10
Compression:
Stored size: 900 Bytes
Contents
# typed: ignore # Copyright (c) 2015 Sqreen. All Rights Reserved. # Please refer to our terms for more information: https://www.sqreen.com/terms.html require 'sqreen/util' class Sqreen::Util::CappedHash < Hash attr_reader :size_cap, :depth_cap 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 def []=(key, value) super if key?(key) || keep?(value) end alias_method :store, :[]= def merge!(h) h.each { |k, v| self[k] = block_given? ? yield(k, self[k], v) : v } end alias_method :update, :merge! def replace(h) keep_if { false } merge!(h) end private def keep?(value) size < size_cap && (depth_cap > 0 || !value.is_a?(Hash) && !value.is_a?(Array)) end end
Version data entries
10 entries across 10 versions & 1 rubygems