ruby-quilt 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/lru_cache.rb +42 -0
  2. metadata +2 -1
data/lib/lru_cache.rb ADDED
@@ -0,0 +1,42 @@
1
+ class LRUCache
2
+ def initialize(size = 10)
3
+ @size = size
4
+ @store = {}
5
+ @lru = []
6
+ end
7
+
8
+ def set(key, value = nil)
9
+ @store[key] = value
10
+ set_lru(key)
11
+ @store.delete(@lru.pop) if @lru.size > @size
12
+ value
13
+ end
14
+
15
+ def get(key)
16
+ return nil unless @store.key?(key)
17
+ set_lru(key)
18
+ @store[key]
19
+ end
20
+
21
+ def [](key)
22
+ get(key)
23
+ end
24
+
25
+ def []=(key, value)
26
+ set(key, value)
27
+ end
28
+
29
+ def keys
30
+ @store.keys
31
+ end
32
+
33
+ def delete(key)
34
+ @store.delete(key)
35
+ @lru.delete(key)
36
+ end
37
+
38
+ private
39
+ def set_lru(key)
40
+ @lru.unshift(@lru.delete(key) || key)
41
+ end
42
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-quilt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -151,6 +151,7 @@ extensions: []
151
151
  extra_rdoc_files: []
152
152
  files:
153
153
  - lib/quilt.rb
154
+ - lib/lru_cache.rb
154
155
  homepage: http://github.com/ooyala/ruby-quilt
155
156
  licenses:
156
157
  - MIT