class BoundedHash
Public Class Methods
new(size_limit)
click to toggle source
# File lib/bounded_hash.rb, line 3 def initialize(size_limit) @size_limit = size_limit @values = Hash.new # stores user-supplied mappings @next_entry_id = 0 @entries = Hash.new # maps entry ids to keys. lower ids = older keys. self end
Public Instance Methods
[](k)
click to toggle source
# File lib/bounded_hash.rb, line 11 def [] (k) @values[k] end
[]=(k, v)
click to toggle source
# File lib/bounded_hash.rb, line 15 def []= (k, v) @values[k] = v @entries[@next_entry_id += 1] = k ensure_bounds self end
ensure_bounds()
click to toggle source
# File lib/bounded_hash.rb, line 22 def ensure_bounds while @values.length > @size_limit do i = @entries.keys.min @values.delete(@entries[i]) @entries.delete(i) end end