parallel-ancestry 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG.rdoc +3 -0
- data/lib/parallel-ancestry/ParallelAncestry.rb +100 -0
- metadata +2 -1
data/CHANGELOG.rdoc
CHANGED
@@ -27,6 +27,9 @@ module ::ParallelAncestry
|
|
27
27
|
# children #
|
28
28
|
##############
|
29
29
|
|
30
|
+
# Return a list of children for provided object.
|
31
|
+
# @param [Object] instance Object instance.
|
32
|
+
# @return [Array<Object>] An array containing references to children.
|
30
33
|
def children( instance )
|
31
34
|
|
32
35
|
return children_hash( instance ).keys
|
@@ -37,6 +40,9 @@ module ::ParallelAncestry
|
|
37
40
|
# parents #
|
38
41
|
#############
|
39
42
|
|
43
|
+
# Return a list of parents for provided object.
|
44
|
+
# @param [Object] instance Object instance.
|
45
|
+
# @return [Array<Object>] An array containing references to immediate parents for any configuration.
|
40
46
|
def parents( instance )
|
41
47
|
|
42
48
|
return parents_array( instance )
|
@@ -47,6 +53,9 @@ module ::ParallelAncestry
|
|
47
53
|
# has_parents? #
|
48
54
|
##################
|
49
55
|
|
56
|
+
# Return whether provided object has parents.
|
57
|
+
# @param [Object] instance Object instance.
|
58
|
+
# @return [true, false] true or false.
|
50
59
|
def has_parents?( instance )
|
51
60
|
|
52
61
|
has_parents = false
|
@@ -65,6 +74,9 @@ module ::ParallelAncestry
|
|
65
74
|
# has_children? #
|
66
75
|
###################
|
67
76
|
|
77
|
+
# Return whether provided object has children.
|
78
|
+
# @param [Object] instance Object instance.
|
79
|
+
# @return [true, false] true or false.
|
68
80
|
def has_children?( instance )
|
69
81
|
|
70
82
|
has_children = false
|
@@ -83,6 +95,10 @@ module ::ParallelAncestry
|
|
83
95
|
# register_child_for_parent #
|
84
96
|
###############################
|
85
97
|
|
98
|
+
# Register instance as child of another instance.
|
99
|
+
# @param [Object] child Child instance.
|
100
|
+
# @param [Object] parent Parent instance.
|
101
|
+
# @return [Array<Object>] An array containing references to children.
|
86
102
|
def register_child_for_parent( child, parent )
|
87
103
|
|
88
104
|
parents_of_child_hash = parents_hash( child )
|
@@ -107,6 +123,19 @@ module ::ParallelAncestry
|
|
107
123
|
# ancestor #
|
108
124
|
##############
|
109
125
|
|
126
|
+
# Return parent for instance that matches match_ancestor_block.
|
127
|
+
# @param [Object] instance Child instance.
|
128
|
+
# @yield Block used to match parent. The parameter is the parent instance, the return value true
|
129
|
+
# or false, reflecting whether or not block matched ancestor.
|
130
|
+
# @example
|
131
|
+
# ::ParallelAncestry.ancestor( some_instance ) do |this_parent|
|
132
|
+
# if this_parent.matches_arbitrary_condition
|
133
|
+
# true
|
134
|
+
# else
|
135
|
+
# false
|
136
|
+
# end
|
137
|
+
# end
|
138
|
+
# @return [Object] A reference to parent matching block condition.
|
110
139
|
def ancestor( instance, & match_ancestor_block )
|
111
140
|
|
112
141
|
ancestor_instance = nil
|
@@ -137,10 +166,25 @@ module ::ParallelAncestry
|
|
137
166
|
|
138
167
|
end
|
139
168
|
|
169
|
+
alias_method :parent, :ancestor
|
170
|
+
|
140
171
|
####################
|
141
172
|
# ancestor_chain #
|
142
173
|
####################
|
143
174
|
|
175
|
+
# Returns ancestor chain defined for provided object.
|
176
|
+
# @param [Object] instance Instance for which ancestors are being looked up.
|
177
|
+
# @yield Block used to match parent. The parameter is the parent instance, the return value true
|
178
|
+
# or false, reflecting whether or not block matched ancestor.
|
179
|
+
# @example
|
180
|
+
# ::ParallelAncestry.ancestor( some_instance ) do |this_parent|
|
181
|
+
# if this_parent.matches_arbitrary_condition
|
182
|
+
# true
|
183
|
+
# else
|
184
|
+
# false
|
185
|
+
# end
|
186
|
+
# end
|
187
|
+
# @return [Array<Object>] An array containing references to parents matching block condition.
|
144
188
|
def ancestor_chain( instance, & match_ancestor_block )
|
145
189
|
|
146
190
|
ancestor_chain = [ this_ancestor = instance ]
|
@@ -157,6 +201,22 @@ module ::ParallelAncestry
|
|
157
201
|
# lowest_parents #
|
158
202
|
####################
|
159
203
|
|
204
|
+
# Returns the lowest parent in each parent tree matching block condition. For simple linear
|
205
|
+
# trees, this is simply the first parent, but more complex trees quickly diverge into multiple
|
206
|
+
# branches, each of which then requires a lowest match.
|
207
|
+
# @param [Object] instance Instance for which parents are being looked up.
|
208
|
+
# @yield Block used to match parent. The parameter is the parent instance, the return value true
|
209
|
+
# or false, reflecting whether or not block matched ancestor.
|
210
|
+
# @example
|
211
|
+
# ::ParallelAncestry.lowest_parents( some_instance ) do |this_parent|
|
212
|
+
# if this_parent.matches_arbitrary_condition
|
213
|
+
# true
|
214
|
+
# else
|
215
|
+
# false
|
216
|
+
# end
|
217
|
+
# end
|
218
|
+
# @return [Array<Object>] An array containing references to lowest parent in each parent tree
|
219
|
+
# matching block condition.
|
160
220
|
def lowest_parents( instance, & match_ancestor_block )
|
161
221
|
|
162
222
|
# the first super module available for each tree
|
@@ -189,6 +249,22 @@ module ::ParallelAncestry
|
|
189
249
|
# highest_children #
|
190
250
|
######################
|
191
251
|
|
252
|
+
# Returns the highest parent in each parent tree matching block condition. For simple linear
|
253
|
+
# trees, this is simply the first parent, but more complex trees quickly diverge into multiple
|
254
|
+
# branches, each of which then requires a highest match.
|
255
|
+
# @param [Object] instance Instance for which parents are being looked up.
|
256
|
+
# @yield Block used to match parent. The parameter is the parent instance, the return value true
|
257
|
+
# or false, reflecting whether or not block matched ancestor.
|
258
|
+
# @example
|
259
|
+
# ::ParallelAncestry.highest_parents( some_instance ) do |this_parent|
|
260
|
+
# if this_parent.matches_arbitrary_condition
|
261
|
+
# true
|
262
|
+
# else
|
263
|
+
# false
|
264
|
+
# end
|
265
|
+
# end
|
266
|
+
# @return [Array<Object>] An array containing references to highest parent in each parent tree
|
267
|
+
# matching block condition.
|
192
268
|
def highest_children( instance, & match_ancestor_block )
|
193
269
|
|
194
270
|
# the first super module available for each tree
|
@@ -221,6 +297,30 @@ module ::ParallelAncestry
|
|
221
297
|
# match_ancestor_searching_upward #
|
222
298
|
#####################################
|
223
299
|
|
300
|
+
# Returns the first ancestor (determined by ancestor_match_block) for which match_block is true.
|
301
|
+
# @param [Object] instance Instance for which parents are being looked up.
|
302
|
+
# @param [Proc] ancestor_match_block Proc used to match parent. The parameter is the parent
|
303
|
+
# instance, the return value true or false, reflecting whether or not block matched
|
304
|
+
# ancestor.
|
305
|
+
# @yield Block used to match parent. The parameter is the parent instance, the return value true
|
306
|
+
# or false, reflecting whether or not block matched.
|
307
|
+
# @example
|
308
|
+
# ancestor_match_block = ::Proc.new do |this_parent|
|
309
|
+
# if this_parent.matches_arbitrary_condition
|
310
|
+
# true
|
311
|
+
# else
|
312
|
+
# false
|
313
|
+
# end
|
314
|
+
# end
|
315
|
+
# ::ParallelAncestry.match_ancestor_searching_upward( some_instance,
|
316
|
+
# ancestor_match_block ) do |this_parent|
|
317
|
+
# if this_parent.matches_arbitrary_condition
|
318
|
+
# true
|
319
|
+
# else
|
320
|
+
# false
|
321
|
+
# end
|
322
|
+
# end
|
323
|
+
# @return [Object]
|
224
324
|
def match_ancestor_searching_upward( instance, ancestor_match_block, & match_block )
|
225
325
|
|
226
326
|
matched_value = nil
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: parallel-ancestry
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -79,3 +79,4 @@ summary: Provides parallel implementations of inheritance hierarchies. This is u
|
|
79
79
|
both for tracking the existing inheritance tree and for creating trees that function
|
80
80
|
independently of inheritance models determined internal to Ruby.
|
81
81
|
test_files: []
|
82
|
+
has_rdoc:
|