sorted_array 0.0.2 → 0.0.3

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/TODO.md CHANGED
@@ -4,3 +4,4 @@
4
4
  * TODO: Implement for ActiveRecord
5
5
  * TODO: Implement for MongoId
6
6
  * TODO: Written with Ruby 2.0 - make sure it works with 1.9.3 too.
7
+ * TODO: Don't use hardcoded path /tmp for specs!
@@ -1,71 +1,8 @@
1
1
  require 'sorted_array/version'
2
2
  require 'sorted_array/default_sorter'
3
+ require 'sorted_array/sorted_array'
3
4
 
4
5
  # The gem/module provides a class SortedArray which keeps sorted
5
6
  # with a given Sorter-class after adding new items.
6
7
  module SortedArray
7
-
8
- # A SortedArray takes a Sorter-object as a parameter.
9
- # The array gets sorted after each push,<<,unsift.
10
- # It defines marshal-methods and can be used with PStore
11
- # @see DefaultSorter
12
- class SortedArray < Array
13
-
14
- # @params [Array] args the first argument is a Sorter-object
15
- # @example
16
- # my_array = SortedArray.new( DefaultSorter.new(:foo) )
17
- # my_array << AnyClassWhichSupportsFoo.new(1)
18
- # my_array << AnyClassWhichSupportsFoo.new(3)
19
- # my_array << AnyClassWhichSupportsFoo.new(2)
20
- # # my_array.map(&:foo) => 1,2,3
21
- # @see DefaultSorter
22
- # @see Array
23
- def initialize *args
24
- @sorter = args.shift
25
- super
26
- end
27
-
28
- # @see Array
29
- def push *other
30
- super
31
- @sorter.sort(self)
32
- end
33
-
34
- # @see Array
35
- def unshift other
36
- super
37
- @sorter.sort(self)
38
- end
39
-
40
- # @see Array
41
- def << other
42
- push *other
43
- @sorter.sort(self)
44
- end
45
-
46
- protected
47
-
48
- # @return [Array] - Sorter-object or nil, [...values...]
49
- def marshal_dump
50
- [@sorter ? @sorter.marshal_dump : nil, to_a]
51
- end
52
-
53
- # Initialize sorter and read in data
54
- # @param [Array] array - _sorter, [..entries..]
55
- def marshal_load array
56
- _sorter, _data = *array
57
- if _sorter
58
- initialize_sorter _sorter
59
- push *_data if _data
60
- end
61
- end
62
-
63
- private
64
-
65
- def initialize_sorter args
66
- @sorter = args.shift.new *args
67
- end
68
-
69
- end
70
-
71
8
  end
@@ -1,4 +1,4 @@
1
1
  module SortedArray
2
2
  # Used by gemspec.
3
- VERSION = "0.0.2"
3
+ VERSION = "0.0.3"
4
4
  end
@@ -8,7 +8,7 @@ Gem::Specification.new do |spec|
8
8
  spec.version = SortedArray::VERSION
9
9
  spec.authors = ["Andi Altendorfer"]
10
10
  spec.email = ["andi@iboard.cc"]
11
- spec.description = %q{Provides class SortedArray which you can initialize with a block used to sort the Array after each push-action.}
11
+ spec.description = %q{Class SortedArray keeps sorted after push-actions using a Sorter-class. Implements marshal-functions thus it can be used in PStores.}
12
12
  spec.summary = 'SortedArray.new { |a,b| a.foo <=> b.foo }'
13
13
  spec.homepage = "https://github.com/iboard/sorted_array"
14
14
  spec.license = "MIT"
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.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -171,8 +171,8 @@ dependencies:
171
171
  - - '>='
172
172
  - !ruby/object:Gem::Version
173
173
  version: '0'
174
- description: Provides class SortedArray which you can initialize with a block used
175
- to sort the Array after each push-action.
174
+ description: Class SortedArray keeps sorted after push-actions using a Sorter-class.
175
+ Implements marshal-functions thus it can be used in PStores.
176
176
  email:
177
177
  - andi@iboard.cc
178
178
  executables: []
@@ -209,7 +209,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
209
209
  version: '0'
210
210
  segments:
211
211
  - 0
212
- hash: -1794077783631359981
212
+ hash: 3780593145645614316
213
213
  required_rubygems_version: !ruby/object:Gem::Requirement
214
214
  none: false
215
215
  requirements:
@@ -218,7 +218,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
218
218
  version: '0'
219
219
  segments:
220
220
  - 0
221
- hash: -1794077783631359981
221
+ hash: 3780593145645614316
222
222
  requirements: []
223
223
  rubyforge_project:
224
224
  rubygems_version: 1.8.25