Sha256: e5d0746bfad2cc66447e650d6a70012fb9869e8bdd623cd31d865f72f4d269eb

Contents?: true

Size: 372 Bytes

Versions: 15

Compression:

Stored size: 372 Bytes

Contents

class Sfn::IdentityMap
  attr_reader :records, :pages
  
  def initialize
    @records = {}
    @pages = {}
  end
  
  def get_record(klass, id, &block)
    result = @records[[klass, id]]
    result ||= begin
      obj = yield(klass, id)
      @records[[klass, id]] = obj
    end
    result
  end
  
  def expire_record(klass, id)
    @records[[klass, id]] = nil
  end
end

Version data entries

15 entries across 15 versions & 3 rubygems

Version Path
nullstyle-ruby-satisfaction-0.4.0 lib/satisfaction/identity_map.rb
pius-ruby-satisfaction-0.3.0 lib/satisfaction/identity_map.rb
pius-ruby-satisfaction-0.4.0 lib/satisfaction/identity_map.rb
pius-ruby-satisfaction-0.4.1 lib/satisfaction/identity_map.rb
pius-ruby-satisfaction-0.4.2 lib/satisfaction/identity_map.rb
pius-ruby-satisfaction-0.4.3 lib/satisfaction/identity_map.rb
pius-ruby-satisfaction-0.4.4 lib/satisfaction/identity_map.rb
ruby-satisfaction-0.6.7 lib/satisfaction/identity_map.rb
ruby-satisfaction-0.6.5 lib/satisfaction/identity_map.rb
ruby-satisfaction-0.6.4 lib/satisfaction/identity_map.rb
ruby-satisfaction-0.6.3 lib/satisfaction/identity_map.rb
ruby-satisfaction-0.6.2 lib/satisfaction/identity_map.rb
ruby-satisfaction-0.6.1 lib/satisfaction/identity_map.rb
ruby-satisfaction-0.3.0 lib/satisfaction/identity_map.rb
ruby-satisfaction-0.4.0 lib/satisfaction/identity_map.rb