Sha256: d231acb97eed6f62b2e197b495d24306f514acb56396a924dfbf3813b6b8ad7a
Contents?: true
Size: 846 Bytes
Versions: 1
Compression:
Stored size: 846 Bytes
Contents
# Based on code by Sam Saffron: https://stackoverflow.com/a/16161783/181916 module Skylight module Util class LruCache def initialize(max_size) @max_size = max_size @data = {} end def max_size=(size) raise ArgumentError, :max_size if @max_size < 1 @max_size = size while @data.size > @max_size @data.shift end end # Individual hash operations here are atomic in MRI. def fetch(key) found = true value = @data.delete(key) { found = false } if !found && block_given? value = yield end @data[key] = value if value if !found && value && @data.length > @max_size @data.shift end value end def clear @data.clear end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
skylight-5.0.0.beta | lib/skylight/util/lru_cache.rb |