nathanl/caches

View on GitHub
lib/caches/accessible.rb

Summary

Maintainability
A
0 mins
Test Coverage
module Caches
  module Accessible

    def fetch(key, default = (default_omitted = true; nil))
      value = self[key]
      return value if data.has_key?(key)
      return yield(key) if block_given?
      return default    unless default_omitted
      raise KeyError
    end

    def memoize(key)
      raise ArgumentError, "Block is required" unless block_given?
      value = self[key]
      return value if data.has_key?(key)
      self[key] = yield(key) if block_given?
    end

  end
end