Class: Docscribe::LRUCache
- Inherits:
-
Object
- Object
- Docscribe::LRUCache
- 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
- #[](key) ⇒ Object
- #[]=(key, val) ⇒ Object
- #clear ⇒ void
- #empty? ⇒ Boolean
- #initialize(max_size = 1000) ⇒ void constructor
- #size ⇒ Integer
Constructor Details
#initialize(max_size = 1000) ⇒ void
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
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
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 |
#clear ⇒ void
This method returns an undefined value.
35 36 37 |
# File 'lib/docscribe/lru_cache.rb', line 35 def clear @data.clear end |
#empty? ⇒ Boolean
40 41 42 |
# File 'lib/docscribe/lru_cache.rb', line 40 def empty? @data.empty? end |
#size ⇒ Integer
45 46 47 |
# File 'lib/docscribe/lru_cache.rb', line 45 def size @data.size end |