Class: Sinarey::FifoCache

Inherits:
Object
  • Object
show all
Defined in:
lib/sinarey_cache/fifo/cache.rb

Instance Method Summary collapse

Constructor Details

#initialize(max_size) ⇒ FifoCache



4
5
6
7
# File 'lib/sinarey_cache/fifo/cache.rb', line 4

def initialize(max_size)
  @max_size = max_size
  @data = {}
end

Instance Method Details

#[](key) ⇒ Object



14
15
16
# File 'lib/sinarey_cache/fifo/cache.rb', line 14

def [](key)
  @data[key]
end

#[]=(key, val) ⇒ Object Also known as: store



26
27
28
29
30
# File 'lib/sinarey_cache/fifo/cache.rb', line 26

def []=(key,val)
  @data[key] = val
  @data.delete(@data.first[0]) if @data.length > @max_size
  val
end

#clearObject



42
43
44
# File 'lib/sinarey_cache/fifo/cache.rb', line 42

def clear
  @data.clear
end

#delete(key) ⇒ Object



38
39
40
# File 'lib/sinarey_cache/fifo/cache.rb', line 38

def delete(key)
  @data.delete(key)
end

#fetch(key) ⇒ Object



18
19
20
# File 'lib/sinarey_cache/fifo/cache.rb', line 18

def fetch(key)
  @data[key] || yield if block_given?
end

#getset(key) ⇒ Object



22
23
24
# File 'lib/sinarey_cache/fifo/cache.rb', line 22

def getset(key)
  @data[key] ||= yield
end

#max_size=(size) ⇒ Object

Raises:

  • (ArgumentError)


9
10
11
12
# File 'lib/sinarey_cache/fifo/cache.rb', line 9

def max_size=(size)
  raise ArgumentError.new(:max_size) if @max_size < 1
  @max_size = size
end

#member?(key) ⇒ Boolean



34
35
36
# File 'lib/sinarey_cache/fifo/cache.rb', line 34

def member?(key)
  @data.member?(key)
end