Class: Docscribe::LRUCache

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

Overview

Bounded LRU cache with O(1) access and eviction. Used by Server::Daemon for file rewrite caching.

Instance Method Summary collapse

Constructor Details

#initialize(max_size = 1000) ⇒ void

Parameters:

  • max_size (Integer) (defaults to: 1000)


9
10
11
12
# File 'lib/docscribe/lru_cache.rb', line 9

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

Instance Method Details

#[](key) ⇒ Object

Parameters:

  • key (Object)

Returns:

  • (Object)


16
17
18
19
20
21
22
23
# File 'lib/docscribe/lru_cache.rb', line 16

def [](key)
  val = @data[key]
  return nil unless val

  @data.delete(key)
  @data[key] = val
  val
end

#[]=(key, val) ⇒ Object

Parameters:

  • key (Object)
  • val (Object)

Returns:

  • (Object)


28
29
30
31
32
# File 'lib/docscribe/lru_cache.rb', line 28

def []=(key, val)
  @data.delete(key) if @data.key?(key)
  @data[key] = val
  @data.shift if @data.size > @max_size
end

#clearvoid

This method returns an undefined value.



35
36
37
# File 'lib/docscribe/lru_cache.rb', line 35

def clear
  @data.clear
end

#empty?Boolean

Returns:

  • (Boolean)


40
41
42
# File 'lib/docscribe/lru_cache.rb', line 40

def empty?
  @data.empty?
end

#sizeInteger

Returns:

  • (Integer)


45
46
47
# File 'lib/docscribe/lru_cache.rb', line 45

def size
  @data.size
end