Sha256: b23e03f202027fd4afa9b0e5b0807292e65e30fb016791c225b815ff9983b0a1

Contents?: true

Size: 652 Bytes

Versions: 141

Compression:

Stored size: 652 Bytes

Contents

module ZendeskAPI
  # http://codesnippets.joyent.com/posts/show/12329
  # @private
  class ZendeskAPI::LRUCache
    attr_accessor :size

    def initialize(size = 10)
      @size = size
      @store = {}
      @lru = []
    end

    def write(key, value)
      @store[key] = value
      set_lru(key)
      @store.delete(@lru.pop) if @lru.size > @size
      value
    end

    def read(key)
      set_lru(key)
      @store[key]
    end

    def fetch(key)
      if @store.has_key? key
        read key
      else
        write key, yield
      end
    end

    private

    def set_lru(key)
      @lru.unshift(@lru.delete(key) || key)
    end
  end
end

Version data entries

141 entries across 141 versions & 2 rubygems

Version Path
zendesk_api-3.1.1 lib/zendesk_api/lru_cache.rb
zendesk_api-3.1.0 lib/zendesk_api/lru_cache.rb
zendesk_api-3.0.5 lib/zendesk_api/lru_cache.rb
zendesk_api-3.0.4 lib/zendesk_api/lru_cache.rb
zendesk_api-3.0.2 lib/zendesk_api/lru_cache.rb
zendesk_api-3.0.1 lib/zendesk_api/lru_cache.rb
zendesk_api-3.0.0 lib/zendesk_api/lru_cache.rb
zendesk_api-3.0.0.rc1 lib/zendesk_api/lru_cache.rb
zendesk_api-2.0.1 lib/zendesk_api/lru_cache.rb
zendesk_api-2.0.0 lib/zendesk_api/lru_cache.rb
zendesk_api-1.38.0.rc2 lib/zendesk_api/lru_cache.rb
zendesk_api-1.38.0.rc1 lib/zendesk_api/lru_cache.rb
zendesk_api-1.37.0 lib/zendesk_api/lru_cache.rb
zendesk_api-1.36.0 lib/zendesk_api/lru_cache.rb
zendesk_api-1.35.0 lib/zendesk_api/lru_cache.rb
zendesk_api-1.34.0 lib/zendesk_api/lru_cache.rb
discourse_zendesk_api-1.0.1 lib/zendesk_api/lru_cache.rb
discourse_zendesk_api-1.0.0 lib/zendesk_api/lru_cache.rb
zendesk_api-1.33.0 lib/zendesk_api/lru_cache.rb
zendesk_api-1.32.0 lib/zendesk_api/lru_cache.rb