class ZendeskAPI::ZendeskAPI::LRUCache

@private

def fetch(key)

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

def initialize(size = 10)

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

def read(key)

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

def set_lru(key)

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

def write(key, value)

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