Class: Factbase::Taped
- Inherits:
-
Object
show all
- Defined in:
- lib/factbase/taped.rb
Overview
A decorator of an Array with HashMaps, that records facts that have been touched, using their object_id
.
- Author
-
Yegor Bugayenko ([email protected])
- Copyright
-
Copyright © 2024-2025 Yegor Bugayenko
- License
-
MIT
Defined Under Namespace
Classes: TapedArray, TapedHash
Instance Method Summary
collapse
Constructor Details
#initialize(origin, inserted: [], deleted: [], added: []) ⇒ Taped
Returns a new instance of Taped.
15
16
17
18
19
20
|
# File 'lib/factbase/taped.rb', line 15
def initialize(origin, inserted: [], deleted: [], added: [])
@origin = origin
@inserted = inserted
@deleted = deleted
@added = added
end
|
Instance Method Details
#&(other) ⇒ Object
70
71
72
73
|
# File 'lib/factbase/taped.rb', line 70
def &(other)
return Factbase::Taped.new([], inserted: @inserted, deleted: @deleted, added: @added) if other == []
join(other, &:&)
end
|
#<<(map) ⇒ Object
46
47
48
49
|
# File 'lib/factbase/taped.rb', line 46
def <<(map)
@origin << (map)
@inserted.append(map.object_id)
end
|
#added ⇒ Object
30
31
32
|
# File 'lib/factbase/taped.rb', line 30
def added
@added.uniq
end
|
#delete_if ⇒ Object
58
59
60
61
62
63
64
|
# File 'lib/factbase/taped.rb', line 58
def delete_if
@origin.delete_if do |m|
r = yield m
@deleted.append(m.object_id) if r
r
end
end
|
#deleted ⇒ Object
26
27
28
|
# File 'lib/factbase/taped.rb', line 26
def deleted
@deleted.uniq
end
|
#each ⇒ Object
51
52
53
54
55
56
|
# File 'lib/factbase/taped.rb', line 51
def each
return to_enum(__method__) unless block_given?
@origin.each do |m|
yield TapedHash.new(m, @added)
end
end
|
#empty? ⇒ Boolean
42
43
44
|
# File 'lib/factbase/taped.rb', line 42
def empty?
@origin.empty?
end
|
#find_by_object_id(oid) ⇒ Object
34
35
36
|
# File 'lib/factbase/taped.rb', line 34
def find_by_object_id(oid)
@origin.find { |m| m.object_id == oid }
end
|
#inserted ⇒ Object
22
23
24
|
# File 'lib/factbase/taped.rb', line 22
def inserted
@inserted.uniq
end
|
#size ⇒ Object
38
39
40
|
# File 'lib/factbase/taped.rb', line 38
def size
@origin.size
end
|
#to_a ⇒ Object
66
67
68
|
# File 'lib/factbase/taped.rb', line 66
def to_a
@origin.to_a
end
|
#|(other) ⇒ Object
75
76
77
|
# File 'lib/factbase/taped.rb', line 75
def |(other)
join(other, &:|)
end
|