sorted_array 0.0.3 → 0.0.4

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.
@@ -0,0 +1,65 @@
1
+ module SortedArray
2
+
3
+ # A SortedArray takes a Sorter-object as a parameter.
4
+ # The array gets sorted after each push,<<,unsift.
5
+ # It defines marshal-methods and can be used with PStore
6
+ # @see DefaultSorter
7
+ class SortedArray < Array
8
+
9
+ # @params [Array] args the first argument is a Sorter-object
10
+ # @example
11
+ # my_array = SortedArray.new( DefaultSorter.new(:foo) )
12
+ # my_array << AnyClassWhichSupportsFoo.new(1)
13
+ # my_array << AnyClassWhichSupportsFoo.new(3)
14
+ # my_array << AnyClassWhichSupportsFoo.new(2)
15
+ # # my_array.map(&:foo) => 1,2,3
16
+ # @see DefaultSorter
17
+ # @see Array
18
+ def initialize *args
19
+ @sorter = args.shift
20
+ super
21
+ end
22
+
23
+ # @see Array
24
+ def push *other
25
+ super
26
+ @sorter.sort(self)
27
+ end
28
+
29
+ # @see Array
30
+ def unshift other
31
+ super
32
+ @sorter.sort(self)
33
+ end
34
+
35
+ # @see Array
36
+ def << other
37
+ push *other
38
+ @sorter.sort(self)
39
+ end
40
+
41
+ protected
42
+
43
+ # @return [Array] - Sorter-object or nil, [...values...]
44
+ def marshal_dump
45
+ [@sorter ? @sorter.marshal_dump : nil, to_a]
46
+ end
47
+
48
+ # Initialize sorter and read in data
49
+ # @param [Array] array - _sorter, [..entries..]
50
+ def marshal_load array
51
+ _sorter, _data = *array
52
+ if _sorter
53
+ initialize_sorter _sorter
54
+ push *_data if _data
55
+ end
56
+ end
57
+
58
+ private
59
+
60
+ def initialize_sorter args
61
+ @sorter = args.shift.new *args
62
+ end
63
+
64
+ end
65
+ end
@@ -1,4 +1,4 @@
1
1
  module SortedArray
2
2
  # Used by gemspec.
3
- VERSION = "0.0.3"
3
+ VERSION = "0.0.4"
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sorted_array
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -189,6 +189,7 @@ files:
189
189
  - TODO.md
190
190
  - lib/sorted_array.rb
191
191
  - lib/sorted_array/default_sorter.rb
192
+ - lib/sorted_array/sorted_array.rb
192
193
  - lib/sorted_array/version.rb
193
194
  - sorted_array.gemspec
194
195
  - spec/default_sorter_spec.rb
@@ -209,7 +210,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
209
210
  version: '0'
210
211
  segments:
211
212
  - 0
212
- hash: 3780593145645614316
213
+ hash: 1235662549708378242
213
214
  required_rubygems_version: !ruby/object:Gem::Requirement
214
215
  none: false
215
216
  requirements:
@@ -218,7 +219,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
218
219
  version: '0'
219
220
  segments:
220
221
  - 0
221
- hash: 3780593145645614316
222
+ hash: 1235662549708378242
222
223
  requirements: []
223
224
  rubyforge_project:
224
225
  rubygems_version: 1.8.25