Class: Canistor::Storage::Objects
- Inherits:
-
Object
- Object
- Canistor::Storage::Objects
- Defined in:
- lib/canistor/storage/objects.rb
Overview
Manages a lookup table of versioned objects.
Instance Method Summary collapse
- #[](key) ⇒ Object
- #[]=(key, object) ⇒ Object
- #delete(key) ⇒ Object
- #dig(*segments) ⇒ Object
- #each ⇒ Object
-
#initialize(versioned: true) ⇒ Objects
constructor
A new instance of Objects.
- #versioned? ⇒ Boolean
Constructor Details
#initialize(versioned: true) ⇒ Objects
Returns a new instance of Objects.
7 8 9 10 |
# File 'lib/canistor/storage/objects.rb', line 7 def initialize(versioned: true) @versioned = versioned @objects = {} end |
Instance Method Details
#[](key) ⇒ Object
16 17 18 19 20 |
# File 'lib/canistor/storage/objects.rb', line 16 def [](key) if stack = @objects[key] stack.last end end |
#[]=(key, object) ⇒ Object
22 23 24 25 26 27 28 29 |
# 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) ⇒ Object
31 32 33 34 35 36 37 |
# 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) ⇒ Object
39 40 41 |
# File 'lib/canistor/storage/objects.rb', line 39 def dig(*segments) @objects.dig(*segments)&.last end |
#each ⇒ Object
43 44 45 46 47 |
# File 'lib/canistor/storage/objects.rb', line 43 def each @objects.each do |key, stack| yield [key, stack.last] end end |
#versioned? ⇒ Boolean
12 13 14 |
# File 'lib/canistor/storage/objects.rb', line 12 def versioned? @versioned end |