Class: BoundedHash

Inherits:
Object
  • Object
show all
Defined in:
lib/bounded_hash.rb

Instance Method Summary collapse

Constructor Details

#initialize(size_limit) ⇒ BoundedHash

Returns a new instance of BoundedHash.



3
4
5
6
7
8
9
# 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

Instance Method Details

#[](k) ⇒ Object



11
12
13
# File 'lib/bounded_hash.rb', line 11

def [] (k)
  @values[k]
end

#[]=(k, v) ⇒ Object



15
16
17
18
19
20
# File 'lib/bounded_hash.rb', line 15

def []= (k, v)
  @values[k] = v
  @entries[@next_entry_id += 1] = k
  ensure_bounds
  self
end

#ensure_boundsObject



22
23
24
25
26
27
28
# 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