class Canistor::Storage::Objects
Manages a lookup table of versioned objects.
Public Class Methods
new(versioned: true)
click to toggle source
# File lib/canistor/storage/objects.rb, line 7 def initialize(versioned: true) @versioned = versioned @objects = {} end
Public Instance Methods
[](key)
click to toggle source
# File lib/canistor/storage/objects.rb, line 16 def [](key) if stack = @objects[key] stack.last end end
[]=(key, object)
click to toggle source
# File lib/canistor/storage/objects.rb, line 22 def []=(key, object) @objects[key] ||= [] if versioned? @objects[key].push(object) else @objects[key] = [object] end end
delete(key)
click to toggle source
# File lib/canistor/storage/objects.rb, line 31 def delete(key) if versioned? self[key] = Canistor::Storage::DeleteMarker.new else @objects.delete(key).last end end
dig(*segments)
click to toggle source
# File lib/canistor/storage/objects.rb, line 39 def dig(*segments) @objects.dig(*segments)&.last end
each() { |key, last| ... }
click to toggle source
# File lib/canistor/storage/objects.rb, line 43 def each @objects.each do |key, stack| yield [key, stack.last] end end
versioned?()
click to toggle source
# File lib/canistor/storage/objects.rb, line 12 def versioned? @versioned end