lib/ro/cache.rb in ro-1.1.1 vs lib/ro/cache.rb in ro-1.2.0

- old
+ new

@@ -1,20 +1,26 @@ module Ro - class Cache < ::Hash + class Cache < ::Map def write(key, value) - self[key] = value + invalidate(key) + set(key => value) end def read(key, &block) - if has_key?(key) - self[key] + if has?(key) + get(key) else if block value = block.call write(key, value) else nil end end + end + + def invalidate(key) + prefix = Array(key).dup.tap{|array| array.pop} + set(prefix, {}) end end end