# File lib/ramaze/snippets/ramaze/lru_hash.rb, line 208 def fetch(key, default = (p_default = true; nil)) if key?(key) value = self[key] elsif p_default.nil? value = self[key] = default elsif block_given? value = self[key] = yield(key) else raise KeyError, "key not found: %p" % [key] end value end