array-sorted-compositing 1.0.0

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 ADDED
@@ -0,0 +1,22 @@
1
+
2
+ == 3/17/12
3
+
4
+ Initial release.
5
+
6
+ == 3/18/12
7
+
8
+ Added hooks for subclassing.
9
+
10
+ == 3/30/12
11
+
12
+ Added return self to end of reverse!
13
+ Added sort_block to :new to provide sorting by return value of block.
14
+
15
+ == 6/1/12
16
+
17
+ Added :configuration_instance parameter to :initialize.
18
+
19
+ == 6/15/12
20
+
21
+ Moved hooks out to array-sorted and utilized array-sorted as foundation.
22
+
data/README.md ADDED
@@ -0,0 +1,75 @@
1
+ # Sorted Compositing Array #
2
+
3
+ http://rubygems.org/gems/array-sorted-compositing
4
+
5
+ # Description #
6
+
7
+ Provides Array::Sorted::Compositing.
8
+
9
+ # Summary #
10
+
11
+ An implementation of Array that permits chaining, where children inherit changes to parent and where parent settings can be overridden in children, and that retains sorted order.
12
+
13
+ # Install #
14
+
15
+ * sudo gem install array-sorted-compositing
16
+
17
+ # Usage #
18
+
19
+ ```ruby
20
+ compositing_array = Array::Sorted::Compositing.new
21
+ sub_compositing_array = Array::Sorted::Compositing.new( compositing_array )
22
+
23
+ compositing_array.push( :A )
24
+ # compositing_array
25
+ # => [ :A ]
26
+ # sub_compositing_array
27
+ # => [ :A ]
28
+ compositing_array.push( :C )
29
+ # compositing_array
30
+ # => [ :A, :C ]
31
+ # sub_compositing_array
32
+ # => [ :A, :C ]
33
+ compositing_array.push( :B )
34
+ # compositing_array
35
+ # => [ :A, :B, :C ]
36
+ # sub_compositing_array
37
+ # => [ :A, :B, :C ]
38
+
39
+ compositing_array.delete_at( 0 )
40
+ # compositing_array
41
+ # => [ :B, :C ]
42
+ # sub_compositing_array
43
+ # => [ :B, :C ]
44
+
45
+ sub_compositing_array.push( :A )
46
+ # compositing_array
47
+ # => [ :B, :C ]
48
+ # sub_compositing_array
49
+ # => [ :A, :B, :C ]
50
+ ```
51
+
52
+ # License #
53
+
54
+ (The MIT License)
55
+
56
+ Copyright (c) Asher
57
+
58
+ Permission is hereby granted, free of charge, to any person obtaining
59
+ a copy of this software and associated documentation files (the
60
+ 'Software'), to deal in the Software without restriction, including
61
+ without limitation the rights to use, copy, modify, merge, publish,
62
+ distribute, sublicense, and/or sell copies of the Software, and to
63
+ permit persons to whom the Software is furnished to do so, subject to
64
+ the following conditions:
65
+
66
+ The above copyright notice and this permission notice shall be
67
+ included in all copies or substantial portions of the Software.
68
+
69
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
70
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
71
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
72
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
73
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
74
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
75
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc ADDED
File without changes
@@ -0,0 +1,2 @@
1
+
2
+ require_relative 'array/sorted/compositing.rb'
@@ -0,0 +1,2 @@
1
+
2
+ require_relative '../../sorted/compositing.rb'
@@ -0,0 +1,17 @@
1
+
2
+ require 'array/sorted'
3
+ require 'array/compositing'
4
+ #require_relative '../../../../../hooked_objects/array-sorted/lib/array-sorted.rb'
5
+ #require_relative '../../../../array-compositing/lib/array-compositing.rb'
6
+
7
+ # namespaces that have to be declared ahead of time for proper load order
8
+ require_relative './namespaces'
9
+
10
+ # source file requires
11
+ require_relative './requires.rb'
12
+
13
+ class ::Array::Sorted::Compositing < ::Array::Hooked
14
+
15
+ include ::Array::Sorted::Compositing::ArrayInterface
16
+
17
+ end
@@ -0,0 +1,23 @@
1
+
2
+ module ::Array::Sorted::Compositing::ArrayInterface
3
+
4
+ include ::Array::Sorted::ArrayInterface
5
+ include ::Array::Compositing::ArrayInterface
6
+
7
+ ##############
8
+ # reverse! #
9
+ ##############
10
+
11
+ def reverse!
12
+
13
+ super
14
+
15
+ @sub_composite_arrays.each do |this_sub_array|
16
+ this_sub_array.instance_eval do
17
+ parent_reversed!
18
+ end
19
+ end
20
+
21
+ end
22
+
23
+ end
@@ -0,0 +1,5 @@
1
+
2
+ class ::Array::Sorted < ::Array::Hooked
3
+ class Compositing < ::Array::Hooked
4
+ end
5
+ end
@@ -0,0 +1,3 @@
1
+
2
+ require_relative 'compositing/array_interface.rb'
3
+
@@ -0,0 +1,1083 @@
1
+
2
+ require_relative '../../../lib/array-sorted-compositing.rb'
3
+
4
+ describe ::Array::Sorted::Compositing do
5
+
6
+ ################
7
+ # initialize #
8
+ ################
9
+
10
+ it 'can add initialize with an ancestor, inheriting its values and linking to it as a child' do
11
+
12
+ cascading_composite_array = ::Array::Sorted::Compositing.new
13
+
14
+ cascading_composite_array.instance_variable_get( :@parent_composite_object ).should == nil
15
+ cascading_composite_array.should == [ ]
16
+
17
+ cascading_composite_array.push( :A, :B, :C, :D )
18
+
19
+ sub_cascading_composite_array = ::Array::Sorted::Compositing.new( cascading_composite_array )
20
+ sub_cascading_composite_array.instance_variable_get( :@parent_composite_object ).should == cascading_composite_array
21
+ sub_cascading_composite_array.should == [ :A, :B, :C, :D ]
22
+
23
+ end
24
+
25
+ #########
26
+ # []= #
27
+ #########
28
+
29
+ it 'can add elements' do
30
+
31
+ cascading_composite_array = ::Array::Sorted::Compositing.new
32
+ sub_cascading_composite_array = ::Array::Sorted::Compositing.new( cascading_composite_array )
33
+
34
+ cascading_composite_array[ 0 ] = :A
35
+ cascading_composite_array.should == [ :A ]
36
+ sub_cascading_composite_array.should == [ :A ]
37
+
38
+ cascading_composite_array[ 1 ] = :B
39
+ cascading_composite_array.should == [ :A, :B ]
40
+ sub_cascading_composite_array.should == [ :A, :B ]
41
+
42
+ sub_cascading_composite_array[ 0 ] = :C
43
+ cascading_composite_array.should == [ :A, :B ]
44
+ sub_cascading_composite_array.should == [ :B, :C ]
45
+
46
+ sub_cascading_composite_array[ 0 ] = :B
47
+ cascading_composite_array.should == [ :A, :B ]
48
+ sub_cascading_composite_array.should == [ :B, :C ]
49
+
50
+ sub_cascading_composite_array[ 2 ] = :C
51
+ cascading_composite_array.should == [ :A, :B ]
52
+ sub_cascading_composite_array.should == [ :B, :C, :C ]
53
+
54
+ cascading_composite_array[ 0 ] = :D
55
+ cascading_composite_array.should == [ :B, :D ]
56
+ sub_cascading_composite_array.should == [ :B, :C, :C ]
57
+
58
+ end
59
+
60
+ ############
61
+ # insert #
62
+ ############
63
+
64
+ it 'can insert elements' do
65
+
66
+ cascading_composite_array = ::Array::Sorted::Compositing.new
67
+ sub_cascading_composite_array = ::Array::Sorted::Compositing.new( cascading_composite_array )
68
+
69
+ cascading_composite_array.insert( 3, :D )
70
+ cascading_composite_array.should == [ nil, nil, nil, :D ]
71
+ sub_cascading_composite_array.should == [ nil, nil, nil, :D ]
72
+
73
+ cascading_composite_array.insert( 1, :B )
74
+ cascading_composite_array.should == [ nil, nil, nil, :B, :D ]
75
+
76
+ sub_cascading_composite_array.should == [ nil, nil, nil, :B, :D ]
77
+
78
+ cascading_composite_array.insert( 2, :C )
79
+ cascading_composite_array.should == [ nil, nil, nil, :B, :C, :D ]
80
+ sub_cascading_composite_array.should == [ nil, nil, nil, :B, :C, :D ]
81
+
82
+ sub_cascading_composite_array.insert( 0, :E )
83
+ cascading_composite_array.should == [ nil, nil, nil, :B, :C, :D ]
84
+ sub_cascading_composite_array.should == [ nil, nil, nil, :B, :C, :D, :E ]
85
+
86
+ sub_cascading_composite_array.insert( 4, :F )
87
+ cascading_composite_array.should == [ nil, nil, nil, :B, :C, :D ]
88
+ sub_cascading_composite_array.should == [ nil, nil, nil, :B, :C, :D, :E, :F ]
89
+
90
+ end
91
+
92
+ ##########
93
+ # push #
94
+ # << #
95
+ ##########
96
+
97
+ it 'can add elements' do
98
+
99
+ cascading_composite_array = ::Array::Sorted::Compositing.new
100
+ sub_cascading_composite_array = ::Array::Sorted::Compositing.new( cascading_composite_array )
101
+
102
+ cascading_composite_array << :A
103
+ cascading_composite_array.should == [ :A ]
104
+ sub_cascading_composite_array.should == [ :A ]
105
+
106
+ cascading_composite_array << :B
107
+ cascading_composite_array.should == [ :A, :B ]
108
+ sub_cascading_composite_array.should == [ :A, :B ]
109
+
110
+ sub_cascading_composite_array << :C
111
+ cascading_composite_array.should == [ :A, :B ]
112
+ sub_cascading_composite_array.should == [ :A, :B, :C ]
113
+
114
+ sub_cascading_composite_array << :B
115
+ cascading_composite_array.should == [ :A, :B ]
116
+ sub_cascading_composite_array.should == [ :A, :B, :B, :C ]
117
+
118
+ end
119
+
120
+ ############
121
+ # concat #
122
+ # + #
123
+ ############
124
+
125
+ it 'can add elements' do
126
+
127
+ # NOTE: this breaks + by causing it to modify the array like +=
128
+ # The alternative was worse.
129
+
130
+ cascading_composite_array = ::Array::Sorted::Compositing.new
131
+ sub_cascading_composite_array = ::Array::Sorted::Compositing.new( cascading_composite_array )
132
+
133
+ cascading_composite_array.concat( [ :A ] )
134
+ cascading_composite_array.should == [ :A ]
135
+ sub_cascading_composite_array.should == [ :A ]
136
+
137
+ cascading_composite_array += [ :B ]
138
+ cascading_composite_array.should == [ :A, :B ]
139
+ sub_cascading_composite_array.should == [ :A, :B ]
140
+
141
+ sub_cascading_composite_array.concat( [ :C ] )
142
+ cascading_composite_array.should == [ :A, :B ]
143
+ sub_cascading_composite_array.should == [ :A, :B, :C ]
144
+
145
+ sub_cascading_composite_array += [ :B ]
146
+ cascading_composite_array.should == [ :A, :B ]
147
+ sub_cascading_composite_array.should == [ :A, :B, :B, :C ]
148
+
149
+ end
150
+
151
+ ####################
152
+ # delete_objects #
153
+ ####################
154
+
155
+ it 'can delete multiple elements' do
156
+
157
+ cascading_composite_array = ::Array::Sorted::Compositing.new
158
+ sub_cascading_composite_array = ::Array::Sorted::Compositing.new( cascading_composite_array )
159
+
160
+ cascading_composite_array += [ :A, :B ]
161
+ cascading_composite_array.should == [ :A, :B ]
162
+ sub_cascading_composite_array.should == [ :A, :B ]
163
+
164
+ cascading_composite_array.delete_objects( :A, :B )
165
+ cascading_composite_array.should == [ ]
166
+ sub_cascading_composite_array.should == [ ]
167
+
168
+ sub_cascading_composite_array += [ :B, :C, :D ]
169
+ cascading_composite_array.should == [ ]
170
+ sub_cascading_composite_array.should == [ :B, :C, :D ]
171
+
172
+ sub_cascading_composite_array.delete_objects( :C, :B )
173
+ cascading_composite_array.should == [ ]
174
+ sub_cascading_composite_array.should == [ :D ]
175
+
176
+ end
177
+
178
+ #######
179
+ # - #
180
+ #######
181
+
182
+ it 'can exclude elements' do
183
+
184
+ cascading_composite_array = ::Array::Sorted::Compositing.new
185
+ sub_cascading_composite_array = ::Array::Sorted::Compositing.new( cascading_composite_array )
186
+
187
+ cascading_composite_array.push( :A )
188
+ cascading_composite_array.should == [ :A ]
189
+ sub_cascading_composite_array.should == [ :A ]
190
+
191
+ cascading_composite_array -= [ :A ]
192
+ cascading_composite_array.should == [ ]
193
+ sub_cascading_composite_array.should == [ ]
194
+
195
+ cascading_composite_array.push( :B )
196
+ cascading_composite_array.should == [ :B ]
197
+ sub_cascading_composite_array.should == [ :B ]
198
+
199
+ sub_cascading_composite_array.push( :C )
200
+ cascading_composite_array.should == [ :B ]
201
+ sub_cascading_composite_array.should == [ :B, :C ]
202
+
203
+ sub_cascading_composite_array -= [ :B ]
204
+ cascading_composite_array.should == [ :B ]
205
+ sub_cascading_composite_array.should == [ :C ]
206
+
207
+ end
208
+
209
+ ############
210
+ # delete #
211
+ ############
212
+
213
+ it 'can delete elements' do
214
+
215
+ cascading_composite_array = ::Array::Sorted::Compositing.new
216
+ sub_cascading_composite_array = ::Array::Sorted::Compositing.new( cascading_composite_array )
217
+
218
+ cascading_composite_array.push( :A )
219
+ cascading_composite_array.should == [ :A ]
220
+ sub_cascading_composite_array.should == [ :A ]
221
+
222
+ cascading_composite_array.delete( :A )
223
+ cascading_composite_array.should == [ ]
224
+ sub_cascading_composite_array.should == [ ]
225
+
226
+ cascading_composite_array.push( :B )
227
+ cascading_composite_array.should == [ :B ]
228
+ sub_cascading_composite_array.should == [ :B ]
229
+
230
+ sub_cascading_composite_array.push( :C )
231
+ cascading_composite_array.should == [ :B ]
232
+ sub_cascading_composite_array.should == [ :B, :C ]
233
+
234
+ sub_cascading_composite_array.delete( :B )
235
+ cascading_composite_array.should == [ :B ]
236
+ sub_cascading_composite_array.should == [ :C ]
237
+
238
+ end
239
+
240
+ ###############
241
+ # delete_at #
242
+ ###############
243
+
244
+ it 'can delete by indexes' do
245
+
246
+ cascading_composite_array = ::Array::Sorted::Compositing.new
247
+ sub_cascading_composite_array = ::Array::Sorted::Compositing.new( cascading_composite_array )
248
+
249
+ cascading_composite_array.push( :A )
250
+ cascading_composite_array.should == [ :A ]
251
+ sub_cascading_composite_array.should == [ :A ]
252
+
253
+ cascading_composite_array.delete_at( 0 )
254
+ cascading_composite_array.should == [ ]
255
+ sub_cascading_composite_array.should == [ ]
256
+
257
+ cascading_composite_array.push( :B )
258
+ cascading_composite_array.should == [ :B ]
259
+ sub_cascading_composite_array.should == [ :B ]
260
+
261
+ sub_cascading_composite_array.push( :C )
262
+ cascading_composite_array.should == [ :B ]
263
+ sub_cascading_composite_array.should == [ :B, :C ]
264
+
265
+ sub_cascading_composite_array.delete_at( 0 )
266
+ cascading_composite_array.should == [ :B ]
267
+ sub_cascading_composite_array.should == [ :C ]
268
+
269
+ end
270
+
271
+ #######################
272
+ # delete_at_indexes #
273
+ #######################
274
+
275
+ it 'can delete by indexes' do
276
+
277
+ cascading_composite_array = ::Array::Sorted::Compositing.new
278
+ sub_cascading_composite_array = ::Array::Sorted::Compositing.new( cascading_composite_array )
279
+
280
+ cascading_composite_array.push( :A, :B, :C )
281
+ cascading_composite_array.should == [ :A, :B, :C ]
282
+ sub_cascading_composite_array.should == [ :A, :B, :C ]
283
+
284
+ cascading_composite_array.delete_at_indexes( 0, 1 )
285
+ cascading_composite_array.should == [ :C ]
286
+ sub_cascading_composite_array.should == [ :C ]
287
+
288
+ sub_cascading_composite_array.push( :C, :B )
289
+ cascading_composite_array.should == [ :C ]
290
+ sub_cascading_composite_array.should == [ :B, :C, :C ]
291
+
292
+ sub_cascading_composite_array.delete_at_indexes( 0, 1, 2 )
293
+ cascading_composite_array.should == [ :C ]
294
+ sub_cascading_composite_array.should == [ ]
295
+
296
+ end
297
+
298
+ ###############
299
+ # delete_if #
300
+ ###############
301
+
302
+ it 'can delete by block' do
303
+
304
+ cascading_composite_array = ::Array::Sorted::Compositing.new
305
+ sub_cascading_composite_array = ::Array::Sorted::Compositing.new( cascading_composite_array )
306
+
307
+ cascading_composite_array.push( :A, :B, :C )
308
+ cascading_composite_array.should == [ :A, :B, :C ]
309
+ sub_cascading_composite_array.should == [ :A, :B, :C ]
310
+ cascading_composite_array.delete_if do |object|
311
+ object != :C
312
+ end
313
+ cascading_composite_array.should == [ :C ]
314
+ sub_cascading_composite_array.should == [ :C ]
315
+
316
+ sub_cascading_composite_array.push( :C, :B )
317
+ cascading_composite_array.should == [ :C ]
318
+ sub_cascading_composite_array.should == [ :B, :C, :C ]
319
+ sub_cascading_composite_array.delete_if do |object|
320
+ object != nil
321
+ end
322
+ sub_cascading_composite_array.should == [ ]
323
+ cascading_composite_array.should == [ :C ]
324
+
325
+ cascading_composite_array.delete_if.is_a?( Enumerator ).should == true
326
+
327
+ end
328
+
329
+ #############
330
+ # keep_if #
331
+ #############
332
+
333
+ it 'can keep by block' do
334
+
335
+ cascading_composite_array = ::Array::Sorted::Compositing.new
336
+ sub_cascading_composite_array = ::Array::Sorted::Compositing.new( cascading_composite_array )
337
+
338
+ cascading_composite_array.push( :A, :B, :C )
339
+ cascading_composite_array.should == [ :A, :B, :C ]
340
+ sub_cascading_composite_array.should == [ :A, :B, :C ]
341
+ cascading_composite_array.keep_if do |object|
342
+ object == :C
343
+ end
344
+ cascading_composite_array.should == [ :C ]
345
+ sub_cascading_composite_array.should == [ :C ]
346
+
347
+ sub_cascading_composite_array.push( :C, :B )
348
+ cascading_composite_array.should == [ :C ]
349
+ sub_cascading_composite_array.should == [ :B, :C, :C ]
350
+ sub_cascading_composite_array.keep_if do |object|
351
+ object == nil
352
+ end
353
+ cascading_composite_array.should == [ :C ]
354
+ sub_cascading_composite_array.should == [ ]
355
+
356
+ end
357
+
358
+ ##############
359
+ # compact! #
360
+ ##############
361
+
362
+ it 'can compact' do
363
+
364
+ cascading_composite_array = ::Array::Sorted::Compositing.new
365
+ sub_cascading_composite_array = ::Array::Sorted::Compositing.new( cascading_composite_array )
366
+
367
+ cascading_composite_array.push( :A, nil, :B, nil, :C, nil )
368
+ cascading_composite_array.should == [ nil, nil, nil, :A, :B, :C ]
369
+ sub_cascading_composite_array.should == [ nil, nil, nil, :A, :B, :C ]
370
+ cascading_composite_array.compact!
371
+ cascading_composite_array.should == [ :A, :B, :C ]
372
+ sub_cascading_composite_array.should == [ :A, :B, :C ]
373
+
374
+ sub_cascading_composite_array.push( nil, nil, :D )
375
+ cascading_composite_array.should == [ :A, :B, :C ]
376
+ sub_cascading_composite_array.should == [ nil, nil, :A, :B, :C, :D ]
377
+ sub_cascading_composite_array.compact!
378
+ cascading_composite_array.should == [ :A, :B, :C ]
379
+ sub_cascading_composite_array.should == [ :A, :B, :C, :D ]
380
+
381
+ end
382
+
383
+ ##############
384
+ # flatten! #
385
+ ##############
386
+
387
+ it 'can flatten' do
388
+
389
+ cascading_composite_array = ::Array::Sorted::Compositing.new
390
+ sub_cascading_composite_array = ::Array::Sorted::Compositing.new( cascading_composite_array )
391
+
392
+ cascading_composite_array.push( :A, [ :F_A, :F_B ], :B, [ :F_C ], :C, [ :F_D ], [ :F_E ] )
393
+ cascading_composite_array.should == [ :A, [ :F_A, :F_B ], :B, [ :F_C ], :C, [ :F_D ], [ :F_E ] ]
394
+ sub_cascading_composite_array.should == [ :A, [ :F_A, :F_B ], :B, [ :F_C ], :C, [ :F_D ], [ :F_E ] ]
395
+ cascading_composite_array.flatten!
396
+ cascading_composite_array.should == [ :A, :B, :C, :F_A, :F_B, :F_C, :F_D, :F_E ]
397
+ sub_cascading_composite_array.should == [ :A, :B, :C, :F_A, :F_B, :F_C, :F_D, :F_E ]
398
+
399
+ sub_cascading_composite_array.push( [ :F_F, :F_G ], :D, [ :F_H ] )
400
+ cascading_composite_array.should == [ :A, :B, :C, :F_A, :F_B, :F_C, :F_D, :F_E ]
401
+ sub_cascading_composite_array.should == [ :A, :B, :C, :D, :F_A, :F_B, :F_C, :F_D, :F_E, [ :F_F, :F_G ], [ :F_H ] ]
402
+ sub_cascading_composite_array.flatten!
403
+ cascading_composite_array.should == [ :A, :B, :C, :F_A, :F_B, :F_C, :F_D, :F_E ]
404
+ sub_cascading_composite_array.should == [ :A, :B, :C, :D, :F_A, :F_B, :F_C, :F_D, :F_E, :F_F, :F_G, :F_H ]
405
+
406
+ end
407
+
408
+ #############
409
+ # reject! #
410
+ #############
411
+
412
+ it 'can reject' do
413
+
414
+ cascading_composite_array = ::Array::Sorted::Compositing.new
415
+ sub_cascading_composite_array = ::Array::Sorted::Compositing.new( cascading_composite_array )
416
+
417
+ cascading_composite_array.push( :A, :B, :C )
418
+ cascading_composite_array.should == [ :A, :B, :C ]
419
+ sub_cascading_composite_array.should == [ :A, :B, :C ]
420
+ cascading_composite_array.reject! do |object|
421
+ object != :C
422
+ end
423
+ cascading_composite_array.should == [ :C ]
424
+ sub_cascading_composite_array.should == [ :C ]
425
+
426
+ sub_cascading_composite_array.push( :C, :B )
427
+ cascading_composite_array.should == [ :C ]
428
+ sub_cascading_composite_array.should == [ :B, :C, :C ]
429
+ sub_cascading_composite_array.reject! do |object|
430
+ object != nil
431
+ end
432
+ sub_cascading_composite_array.should == [ ]
433
+ cascading_composite_array.should == [ :C ]
434
+
435
+ cascading_composite_array.reject!.is_a?( Enumerator ).should == true
436
+
437
+ end
438
+
439
+ #############
440
+ # replace #
441
+ #############
442
+
443
+ it 'can replace self' do
444
+
445
+ cascading_composite_array = ::Array::Sorted::Compositing.new
446
+ sub_cascading_composite_array = ::Array::Sorted::Compositing.new( cascading_composite_array )
447
+
448
+ cascading_composite_array.push( :A, :B, :C )
449
+ cascading_composite_array.should == [ :A, :B, :C ]
450
+ sub_cascading_composite_array.should == [ :A, :B, :C ]
451
+ cascading_composite_array.replace( [ :D, :E, :F ] )
452
+ cascading_composite_array.should == [ :D, :E, :F ]
453
+ sub_cascading_composite_array.should == [ :D, :E, :F ]
454
+
455
+ cascading_composite_array.should == [ :D, :E, :F ]
456
+ sub_cascading_composite_array.should == [ :D, :E, :F ]
457
+ sub_cascading_composite_array.replace( [ :G, :H, :I ] )
458
+ cascading_composite_array.should == [ :D, :E, :F ]
459
+ sub_cascading_composite_array.should == [ :G, :H, :I ]
460
+
461
+ end
462
+
463
+ ##############
464
+ # reverse! #
465
+ ##############
466
+
467
+ it 'can reverse self' do
468
+
469
+ cascading_composite_array = ::Array::Sorted::Compositing.new
470
+ sub_cascading_composite_array = ::Array::Sorted::Compositing.new( cascading_composite_array )
471
+
472
+ cascading_composite_array.push( :A, :B, :C )
473
+ cascading_composite_array.should == [ :A, :B, :C ]
474
+ sub_cascading_composite_array.should == [ :A, :B, :C ]
475
+ cascading_composite_array.reverse!
476
+ cascading_composite_array.should == [ :C, :B, :A ]
477
+ sub_cascading_composite_array.should == [ :C, :B, :A ]
478
+
479
+ cascading_composite_array.should == [ :C, :B, :A ]
480
+ sub_cascading_composite_array.should == [ :C, :B, :A ]
481
+ sub_cascading_composite_array.reverse!
482
+ cascading_composite_array.should == [ :C, :B, :A ]
483
+ sub_cascading_composite_array.should == [ :A, :B, :C ]
484
+
485
+ end
486
+
487
+ #############
488
+ # rotate! #
489
+ #############
490
+
491
+ it 'can rotate self' do
492
+
493
+ cascading_composite_array = ::Array::Sorted::Compositing.new
494
+ sub_cascading_composite_array = ::Array::Sorted::Compositing.new( cascading_composite_array )
495
+
496
+ cascading_composite_array.push( :A, :B, :C )
497
+ cascading_composite_array.should == [ :A, :B, :C ]
498
+ sub_cascading_composite_array.should == [ :A, :B, :C ]
499
+
500
+ cascading_composite_array.rotate!
501
+ cascading_composite_array.should == [ :A, :B, :C ]
502
+ sub_cascading_composite_array.should == [ :A, :B, :C ]
503
+
504
+ cascading_composite_array.rotate!( -1 )
505
+ cascading_composite_array.should == [ :A, :B, :C ]
506
+ sub_cascading_composite_array.should == [ :A, :B, :C ]
507
+
508
+ sub_cascading_composite_array.rotate!( 2 )
509
+ cascading_composite_array.should == [ :A, :B, :C ]
510
+ sub_cascading_composite_array.should == [ :A, :B, :C ]
511
+
512
+ end
513
+
514
+ #############
515
+ # select! #
516
+ #############
517
+
518
+ it 'can keep by select' do
519
+
520
+ cascading_composite_array = ::Array::Sorted::Compositing.new
521
+ sub_cascading_composite_array = ::Array::Sorted::Compositing.new( cascading_composite_array )
522
+
523
+ cascading_composite_array.push( :A, :B, :C )
524
+ cascading_composite_array.should == [ :A, :B, :C ]
525
+ sub_cascading_composite_array.should == [ :A, :B, :C ]
526
+ cascading_composite_array.select! do |object|
527
+ object == :C
528
+ end
529
+ cascading_composite_array.should == [ :C ]
530
+ sub_cascading_composite_array.should == [ :C ]
531
+
532
+ sub_cascading_composite_array.push( :C, :B )
533
+ cascading_composite_array.should == [ :C ]
534
+ sub_cascading_composite_array.should == [ :B, :C, :C ]
535
+ sub_cascading_composite_array.select! do |object|
536
+ object == nil
537
+ end
538
+ cascading_composite_array.should == [ :C ]
539
+ sub_cascading_composite_array.should == [ ]
540
+
541
+ cascading_composite_array.select!.is_a?( Enumerator ).should == true
542
+
543
+ end
544
+
545
+ ##############
546
+ # shuffle! #
547
+ ##############
548
+
549
+ it 'can shuffle self' do
550
+
551
+ cascading_composite_array = ::Array::Sorted::Compositing.new
552
+ sub_cascading_composite_array = ::Array::Sorted::Compositing.new( cascading_composite_array )
553
+
554
+ cascading_composite_array.push( :A, :B, :C )
555
+ cascading_composite_array.should == [ :A, :B, :C ]
556
+ sub_cascading_composite_array.should == cascading_composite_array
557
+
558
+ first_shuffle_version = cascading_composite_array.dup
559
+ cascading_composite_array.shuffle!
560
+ cascading_composite_array.should == first_shuffle_version
561
+ sub_cascading_composite_array.should == cascading_composite_array
562
+
563
+ first_shuffle_version = sub_cascading_composite_array.dup
564
+ sub_cascading_composite_array.shuffle!
565
+ sub_cascading_composite_array.should == first_shuffle_version
566
+ sub_cascading_composite_array.should == cascading_composite_array
567
+
568
+ end
569
+
570
+ ##############
571
+ # collect! #
572
+ # map! #
573
+ ##############
574
+
575
+ it 'can replace by collect/map' do
576
+
577
+ cascading_composite_array = ::Array::Sorted::Compositing.new
578
+ sub_cascading_composite_array = ::Array::Sorted::Compositing.new( cascading_composite_array )
579
+
580
+ cascading_composite_array.push( :A, :B, :C )
581
+ cascading_composite_array.should == [ :A, :B, :C ]
582
+ sub_cascading_composite_array.should == [ :A, :B, :C ]
583
+ cascading_composite_array.collect! do |object|
584
+ :C
585
+ end
586
+ cascading_composite_array.should == [ :C, :C, :C ]
587
+ sub_cascading_composite_array.should == [ :C, :C, :C ]
588
+
589
+ sub_cascading_composite_array.collect! do |object|
590
+ :A
591
+ end
592
+ cascading_composite_array.should == [ :C, :C, :C ]
593
+ sub_cascading_composite_array.should == [ :A, :A, :A ]
594
+
595
+ cascading_composite_array.collect!.is_a?( Enumerator ).should == true
596
+
597
+ end
598
+
599
+ ###########
600
+ # sort! #
601
+ ###########
602
+
603
+ it 'can replace by collect/map' do
604
+
605
+ cascading_composite_array = ::Array::Sorted::Compositing.new
606
+ sub_cascading_composite_array = ::Array::Sorted::Compositing.new( cascading_composite_array )
607
+
608
+ cascading_composite_array.push( :A, :B, :C )
609
+ cascading_composite_array.should == [ :A, :B, :C ]
610
+ sub_cascading_composite_array.should == [ :A, :B, :C ]
611
+ cascading_composite_array.sort! do |a, b|
612
+ if a < b
613
+ 1
614
+ elsif a > b
615
+ -1
616
+ elsif a == b
617
+ 0
618
+ end
619
+ end
620
+ cascading_composite_array.should == [ :A, :B, :C ]
621
+ sub_cascading_composite_array.should == [ :A, :B, :C ]
622
+
623
+ sub_cascading_composite_array.sort! do |a, b|
624
+ if a < b
625
+ -1
626
+ elsif a > b
627
+ 1
628
+ elsif a == b
629
+ 0
630
+ end
631
+ end
632
+ cascading_composite_array.should == [ :A, :B, :C ]
633
+ sub_cascading_composite_array.should == [ :A, :B, :C ]
634
+
635
+ cascading_composite_array.sort!
636
+ cascading_composite_array.should == [ :A, :B, :C ]
637
+ sub_cascading_composite_array.should == [ :A, :B, :C ]
638
+
639
+ end
640
+
641
+ ##############
642
+ # sort_by! #
643
+ ##############
644
+
645
+ it 'can replace by collect/map' do
646
+
647
+ cascading_composite_array = ::Array::Sorted::Compositing.new
648
+ sub_cascading_composite_array = ::Array::Sorted::Compositing.new( cascading_composite_array )
649
+
650
+ cascading_composite_array.push( :A, :B, :C )
651
+ cascading_composite_array.should == [ :A, :B, :C ]
652
+ sub_cascading_composite_array.should == [ :A, :B, :C ]
653
+ cascading_composite_array.sort_by! do |object|
654
+ case object
655
+ when :A
656
+ :B
657
+ when :B
658
+ :A
659
+ when :C
660
+ :C
661
+ end
662
+ end
663
+ cascading_composite_array.should == [ :A, :B, :C ]
664
+ sub_cascading_composite_array.should == [ :A, :B, :C ]
665
+
666
+ sub_cascading_composite_array.sort_by! do |object|
667
+ case object
668
+ when :A
669
+ :C
670
+ when :B
671
+ :B
672
+ when :C
673
+ :A
674
+ end
675
+ end
676
+ cascading_composite_array.should == [ :A, :B, :C ]
677
+ sub_cascading_composite_array.should == [ :A, :B, :C ]
678
+
679
+ cascading_composite_array.sort_by!.is_a?( Enumerator ).should == true
680
+
681
+ end
682
+
683
+ ###########
684
+ # uniq! #
685
+ ###########
686
+
687
+ it 'can remove non-unique elements' do
688
+
689
+ cascading_composite_array = ::Array::Sorted::Compositing.new
690
+ sub_cascading_composite_array = ::Array::Sorted::Compositing.new( cascading_composite_array )
691
+
692
+ cascading_composite_array.push( :A, :B, :C, :C, :C, :B, :A )
693
+ cascading_composite_array.should == [ :A, :A, :B, :B, :C, :C, :C ]
694
+ sub_cascading_composite_array.should == [ :A, :A, :B, :B, :C, :C, :C ]
695
+ cascading_composite_array.uniq!
696
+ cascading_composite_array.should == [ :A, :B, :C ]
697
+ sub_cascading_composite_array.should == [ :A, :B, :C ]
698
+
699
+ sub_cascading_composite_array.push( :C, :B )
700
+ cascading_composite_array.should == [ :A, :B, :C ]
701
+ sub_cascading_composite_array.should == [ :A, :B, :B, :C, :C ]
702
+ sub_cascading_composite_array.uniq!
703
+ cascading_composite_array.should == [ :A, :B, :C ]
704
+ sub_cascading_composite_array.should == [ :A, :B, :C ]
705
+
706
+ end
707
+
708
+ #############
709
+ # unshift #
710
+ #############
711
+
712
+ it 'can unshift onto the first element' do
713
+
714
+ cascading_composite_array = ::Array::Sorted::Compositing.new
715
+ sub_cascading_composite_array = ::Array::Sorted::Compositing.new( cascading_composite_array )
716
+
717
+ cascading_composite_array += :A
718
+ cascading_composite_array.should == [ :A ]
719
+ sub_cascading_composite_array.should == [ :A ]
720
+
721
+ cascading_composite_array.unshift( :B )
722
+ cascading_composite_array.should == [ :A, :B ]
723
+ sub_cascading_composite_array.should == [ :A, :B ]
724
+
725
+ sub_cascading_composite_array.unshift( :C )
726
+ cascading_composite_array.should == [ :A, :B ]
727
+ sub_cascading_composite_array.should == [ :A, :B, :C ]
728
+
729
+ end
730
+
731
+ #########
732
+ # pop #
733
+ #########
734
+
735
+ it 'can pop the final element' do
736
+
737
+ cascading_composite_array = ::Array::Sorted::Compositing.new
738
+ sub_cascading_composite_array = ::Array::Sorted::Compositing.new( cascading_composite_array )
739
+
740
+ cascading_composite_array += :A
741
+ cascading_composite_array.should == [ :A ]
742
+ sub_cascading_composite_array.should == [ :A ]
743
+
744
+ cascading_composite_array.pop.should == :A
745
+ cascading_composite_array.should == [ ]
746
+ sub_cascading_composite_array.should == [ ]
747
+
748
+ cascading_composite_array += :B
749
+ cascading_composite_array.should == [ :B ]
750
+ sub_cascading_composite_array.should == [ :B ]
751
+
752
+ sub_cascading_composite_array += :C
753
+ cascading_composite_array.should == [ :B ]
754
+ sub_cascading_composite_array.should == [ :B, :C ]
755
+ sub_cascading_composite_array.pop.should == :C
756
+ cascading_composite_array.should == [ :B ]
757
+ sub_cascading_composite_array.should == [ :B ]
758
+
759
+ end
760
+
761
+ ###########
762
+ # shift #
763
+ ###########
764
+
765
+ it 'can shift the first element' do
766
+
767
+ cascading_composite_array = ::Array::Sorted::Compositing.new
768
+ sub_cascading_composite_array = ::Array::Sorted::Compositing.new( cascading_composite_array )
769
+
770
+ cascading_composite_array += :A
771
+ cascading_composite_array.should == [ :A ]
772
+ sub_cascading_composite_array.should == [ :A ]
773
+
774
+ cascading_composite_array.shift.should == :A
775
+ cascading_composite_array.should == [ ]
776
+ sub_cascading_composite_array.should == [ ]
777
+
778
+ cascading_composite_array += :B
779
+ cascading_composite_array.should == [ :B ]
780
+ sub_cascading_composite_array.should == [ :B ]
781
+
782
+ sub_cascading_composite_array += :C
783
+ cascading_composite_array.should == [ :B ]
784
+ sub_cascading_composite_array.should == [ :B, :C ]
785
+ sub_cascading_composite_array.shift.should == :B
786
+ cascading_composite_array.should == [ :B ]
787
+ sub_cascading_composite_array.should == [ :C ]
788
+
789
+ end
790
+
791
+ ############
792
+ # slice! #
793
+ ############
794
+
795
+ it 'can slice elements' do
796
+
797
+ cascading_composite_array = ::Array::Sorted::Compositing.new
798
+ sub_cascading_composite_array = ::Array::Sorted::Compositing.new( cascading_composite_array )
799
+
800
+ cascading_composite_array += :A
801
+ cascading_composite_array.should == [ :A ]
802
+ sub_cascading_composite_array.should == [ :A ]
803
+
804
+ cascading_composite_array.slice!( 0, 1 ).should == [ :A ]
805
+ cascading_composite_array.should == [ ]
806
+ sub_cascading_composite_array.should == [ ]
807
+
808
+ cascading_composite_array += :B
809
+ cascading_composite_array.should == [ :B ]
810
+ sub_cascading_composite_array.should == [ :B ]
811
+
812
+ sub_cascading_composite_array += :C
813
+ cascading_composite_array.should == [ :B ]
814
+ sub_cascading_composite_array.should == [ :B, :C ]
815
+
816
+ sub_cascading_composite_array.slice!( 0, 1 ).should == [ :B ]
817
+ cascading_composite_array.should == [ :B ]
818
+ sub_cascading_composite_array.should == [ :C ]
819
+
820
+ end
821
+
822
+ ###########
823
+ # clear #
824
+ ###########
825
+
826
+ it 'can clear, causing present elements to be excluded' do
827
+
828
+ cascading_composite_array = ::Array::Sorted::Compositing.new
829
+ sub_cascading_composite_array = ::Array::Sorted::Compositing.new( cascading_composite_array )
830
+
831
+ cascading_composite_array += :A
832
+ cascading_composite_array.should == [ :A ]
833
+ sub_cascading_composite_array.should == [ :A ]
834
+
835
+ cascading_composite_array.clear
836
+ cascading_composite_array.should == [ ]
837
+ sub_cascading_composite_array.should == [ ]
838
+
839
+ cascading_composite_array += :B
840
+ cascading_composite_array.should == [ :B ]
841
+ sub_cascading_composite_array.should == [ :B ]
842
+
843
+ sub_cascading_composite_array += :C
844
+ cascading_composite_array.should == [ :B ]
845
+ sub_cascading_composite_array.should == [ :B, :C ]
846
+
847
+ sub_cascading_composite_array.clear
848
+ cascading_composite_array.should == [ :B ]
849
+ sub_cascading_composite_array.should == [ ]
850
+
851
+ end
852
+
853
+ ##################
854
+ # pre_set_hook #
855
+ ##################
856
+
857
+ it 'has a hook that is called before setting a value; return value is used in place of object' do
858
+
859
+ class ::Array::Sorted::Compositing::SubMockPreSet < ::Array::Sorted::Compositing
860
+
861
+ def pre_set_hook( index, object, is_insert = false )
862
+ return :some_other_value
863
+ end
864
+
865
+ end
866
+
867
+ cascading_composite_array = ::Array::Sorted::Compositing::SubMockPreSet.new
868
+
869
+ cascading_composite_array.push( :some_value )
870
+
871
+ cascading_composite_array.should == [ :some_other_value ]
872
+
873
+ end
874
+
875
+ ###################
876
+ # post_set_hook #
877
+ ###################
878
+
879
+ it 'has a hook that is called after setting a value' do
880
+
881
+ class ::Array::Sorted::Compositing::SubMockPostSet < ::Array::Sorted::Compositing
882
+
883
+ def post_set_hook( index, object, is_insert = false )
884
+ return :some_other_value
885
+ end
886
+
887
+ end
888
+
889
+ cascading_composite_array = ::Array::Sorted::Compositing::SubMockPostSet.new
890
+
891
+ cascading_composite_array.push( :some_value ).should == [ :some_other_value ]
892
+
893
+ cascading_composite_array.should == [ :some_value ]
894
+
895
+ end
896
+
897
+ ##################
898
+ # pre_get_hook #
899
+ ##################
900
+
901
+ it 'has a hook that is called before getting a value; if return value is false, get does not occur' do
902
+
903
+ class ::Array::Sorted::Compositing::SubMockPreGet < ::Array::Sorted::Compositing
904
+
905
+ def pre_get_hook( index )
906
+ return false
907
+ end
908
+
909
+ end
910
+
911
+ cascading_composite_array = ::Array::Sorted::Compositing::SubMockPreGet.new
912
+
913
+ cascading_composite_array.push( :some_value )
914
+ cascading_composite_array[ 0 ].should == nil
915
+
916
+ cascading_composite_array.should == [ :some_value ]
917
+
918
+ end
919
+
920
+ ###################
921
+ # post_get_hook #
922
+ ###################
923
+
924
+ it 'has a hook that is called after getting a value' do
925
+
926
+ class ::Array::Sorted::Compositing::SubMockPostGet < ::Array::Sorted::Compositing
927
+
928
+ def post_get_hook( index, object )
929
+ return :some_other_value
930
+ end
931
+
932
+ end
933
+
934
+ cascading_composite_array = ::Array::Sorted::Compositing::SubMockPostGet.new
935
+
936
+ cascading_composite_array.push( :some_value )
937
+ cascading_composite_array[ 0 ].should == :some_other_value
938
+
939
+ cascading_composite_array.should == [ :some_value ]
940
+
941
+ end
942
+
943
+ #####################
944
+ # pre_delete_hook #
945
+ #####################
946
+
947
+ it 'has a hook that is called before deleting an index; if return value is false, delete does not occur' do
948
+
949
+ class ::Array::Sorted::Compositing::SubMockPreDelete < ::Array::Sorted::Compositing
950
+
951
+ def pre_delete_hook( index )
952
+ return false
953
+ end
954
+
955
+ end
956
+
957
+ cascading_composite_array = ::Array::Sorted::Compositing::SubMockPreDelete.new
958
+
959
+ cascading_composite_array.push( :some_value )
960
+ cascading_composite_array.delete_at( 0 )
961
+
962
+ cascading_composite_array.should == [ :some_value ]
963
+
964
+ end
965
+
966
+ ######################
967
+ # post_delete_hook #
968
+ ######################
969
+
970
+ it 'has a hook that is called after deleting an index' do
971
+
972
+ class ::Array::Sorted::Compositing::SubMockPostDelete < ::Array::Sorted::Compositing
973
+
974
+ def post_delete_hook( index, object )
975
+ return :some_other_value
976
+ end
977
+
978
+ end
979
+
980
+ cascading_composite_array = ::Array::Sorted::Compositing::SubMockPostDelete.new
981
+
982
+ cascading_composite_array.push( :some_value )
983
+ cascading_composite_array.delete_at( 0 ).should == :some_other_value
984
+
985
+ cascading_composite_array.should == [ ]
986
+
987
+ end
988
+
989
+ ########################
990
+ # child_pre_set_hook #
991
+ ########################
992
+
993
+ it 'has a hook that is called before setting a value that has been passed by a parent; return value is used in place of object' do
994
+
995
+ class ::Array::Sorted::Compositing::SubMockChildPreSet < ::Array::Sorted::Compositing
996
+
997
+ def child_pre_set_hook( index, object, is_insert = false )
998
+ return :some_other_value
999
+ end
1000
+
1001
+ end
1002
+
1003
+ cascading_composite_array = ::Array::Sorted::Compositing::SubMockChildPreSet.new
1004
+ sub_cascading_composite_array = ::Array::Sorted::Compositing::SubMockChildPreSet.new( cascading_composite_array )
1005
+ cascading_composite_array.push( :some_value )
1006
+
1007
+ sub_cascading_composite_array.should == [ :some_other_value ]
1008
+
1009
+ end
1010
+
1011
+ #########################
1012
+ # child_post_set_hook #
1013
+ #########################
1014
+
1015
+ it 'has a hook that is called after setting a value passed by a parent' do
1016
+
1017
+ class ::Array::Sorted::Compositing::SubMockChildPostSet < ::Array::Sorted::Compositing
1018
+
1019
+ def child_post_set_hook( index, object, is_insert = false )
1020
+ push( :some_other_value )
1021
+ end
1022
+
1023
+ end
1024
+
1025
+ cascading_composite_array = ::Array::Sorted::Compositing::SubMockChildPostSet.new
1026
+ sub_cascading_composite_array = ::Array::Sorted::Compositing::SubMockChildPostSet.new( cascading_composite_array )
1027
+ cascading_composite_array.push( :some_value )
1028
+
1029
+ cascading_composite_array.should == [ :some_value ]
1030
+ sub_cascading_composite_array.should == [ :some_other_value, :some_value ]
1031
+
1032
+ end
1033
+
1034
+ ###########################
1035
+ # child_pre_delete_hook #
1036
+ ###########################
1037
+
1038
+ it 'has a hook that is called before deleting an index that has been passed by a parent; if return value is false, delete does not occur' do
1039
+
1040
+ class ::Array::Sorted::Compositing::SubMockChildPreDelete < ::Array::Sorted::Compositing
1041
+
1042
+ def child_pre_delete_hook( index )
1043
+ false
1044
+ end
1045
+
1046
+ end
1047
+
1048
+ cascading_composite_array = ::Array::Sorted::Compositing::SubMockChildPreDelete.new
1049
+ sub_cascading_composite_array = ::Array::Sorted::Compositing::SubMockChildPreDelete.new( cascading_composite_array )
1050
+ cascading_composite_array.push( :some_value )
1051
+ cascading_composite_array.delete( :some_value )
1052
+
1053
+ cascading_composite_array.should == [ ]
1054
+ sub_cascading_composite_array.should == [ :some_value ]
1055
+
1056
+ end
1057
+
1058
+ ############################
1059
+ # child_post_delete_hook #
1060
+ ############################
1061
+
1062
+ it 'has a hook that is called after deleting an index passed by a parent' do
1063
+
1064
+ class ::Array::Sorted::Compositing::SubMockChildPostDelete < ::Array::Sorted::Compositing
1065
+
1066
+ def child_post_delete_hook( index, object )
1067
+ delete( :some_other_value )
1068
+ end
1069
+
1070
+ end
1071
+
1072
+ cascading_composite_array = ::Array::Sorted::Compositing::SubMockChildPostDelete.new
1073
+ sub_cascading_composite_array = ::Array::Sorted::Compositing::SubMockChildPostDelete.new( cascading_composite_array )
1074
+ cascading_composite_array.push( :some_value )
1075
+ sub_cascading_composite_array.push( :some_other_value )
1076
+ cascading_composite_array.delete( :some_value )
1077
+
1078
+ cascading_composite_array.should == [ ]
1079
+ sub_cascading_composite_array.should == [ ]
1080
+
1081
+ end
1082
+
1083
+ end
metadata ADDED
@@ -0,0 +1,89 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: array-sorted-compositing
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Asher
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-07-06 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: array-compositing
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: array-sorted
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ description: An implementation of Array that permits chaining, where children inherit
47
+ changes to parent and where parent settings can be overridden in children, and that
48
+ retains sorted order.
49
+ email: asher@ridiculouspower.com
50
+ executables: []
51
+ extensions: []
52
+ extra_rdoc_files: []
53
+ files:
54
+ - lib/array/hooked/compositing/sorted.rb
55
+ - lib/array/sorted/compositing/array_interface.rb
56
+ - lib/array/sorted/compositing.rb
57
+ - lib/array/sorted/namespaces.rb
58
+ - lib/array/sorted/requires.rb
59
+ - lib/array-sorted-compositing.rb
60
+ - spec/array/sorted/compositing_spec.rb
61
+ - README.md
62
+ - README.rdoc
63
+ - CHANGELOG.rdoc
64
+ homepage: http://rubygems.org/gems/array-sorted-compositing
65
+ licenses: []
66
+ post_install_message:
67
+ rdoc_options: []
68
+ require_paths:
69
+ - lib
70
+ required_ruby_version: !ruby/object:Gem::Requirement
71
+ none: false
72
+ requirements:
73
+ - - ! '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ required_rubygems_version: !ruby/object:Gem::Requirement
77
+ none: false
78
+ requirements:
79
+ - - ! '>='
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ requirements: []
83
+ rubyforge_project: array-sorted-compositing
84
+ rubygems_version: 1.8.23
85
+ signing_key:
86
+ specification_version: 3
87
+ summary: Provides Array::Sorted::Compositing.
88
+ test_files: []
89
+ has_rdoc: