sorted_array 0.0.4 → 0.0.5

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/README.md CHANGED
@@ -4,9 +4,11 @@ The gem is providing a class `SortedArray` which keeps sorted
4
4
  after adding new items. When initializing a `SortedArray` you chose
5
5
  a Sorter which must have a method `:sort`
6
6
 
7
- A class `DefaultSorter` is included.
7
+ Sorter-classes `DefaultSorter` and `ReverseSorter` are included.
8
8
 
9
9
  The included `DefaultSorter` sorts a list of Objects by a given method-name.
10
+ The included `ReverseSorter` sorts a list of Objects by a given method-name and then reverses it.
11
+
10
12
 
11
13
  ## Installation
12
14
 
@@ -55,11 +57,14 @@ And a copy of the last coverage-report is at
55
57
  OpenStruct.new( foo: 3 ),
56
58
  OpenStruct.new( foo: 2 )
57
59
  ]
58
- keep_sorted = SortedArray.new( DefaultSorter.new(:foo), data )
59
- keep_sorted << OpenStruct.new( foo: 0 )
60
+ keep_sorted = SortedArray.new( DefaultSorter.new(:foo), data )
61
+ keep_reversed = SortedArray.new( ReverseSorter.new(:foo), data )
62
+ keep_sorted << OpenStruct.new( foo: 0 )
63
+ keep_reversed << OpenStruct.new( foo: 0 )
60
64
 
61
65
  # data.map(&:foo) => [1,3,2]
62
66
  # keep_sorted.map(&:foo) => [0,1,2,3]
67
+ # keep_reversed.map(&:foo) => [3,2,1,0]
63
68
 
64
69
  ## Persistent
65
70
 
@@ -1,5 +1,6 @@
1
1
  require 'sorted_array/version'
2
2
  require 'sorted_array/default_sorter'
3
+ require 'sorted_array/reverse_sorter'
3
4
  require 'sorted_array/sorted_array'
4
5
 
5
6
  # The gem/module provides a class SortedArray which keeps sorted
@@ -0,0 +1,14 @@
1
+ module SortedArray
2
+
3
+ # Sorts and then reverse the array
4
+ class ReverseSorter < DefaultSorter
5
+
6
+ # @param [Object] array - must implement sort! and reverse!
7
+ # @return [Object] - the given object, sorted and reversed
8
+ def sort(array)
9
+ super
10
+ array.reverse!
11
+ end
12
+
13
+ end
14
+ end
@@ -1,4 +1,4 @@
1
1
  module SortedArray
2
2
  # Used by gemspec.
3
- VERSION = "0.0.4"
3
+ VERSION = "0.0.5"
4
4
  end
@@ -0,0 +1,32 @@
1
+ require 'spec_helper'
2
+ require 'pstore'
3
+
4
+ describe SortedArray::ReverseSorter do
5
+
6
+ let(:sorter) { SortedArray::ReverseSorter.new(:foo) }
7
+ let(:items) { [
8
+ OpenStruct.new(foo: 1),
9
+ OpenStruct.new(foo: 3),
10
+ OpenStruct.new(foo: 2)
11
+ ] }
12
+ let(:reversed) { items.sort{|a,b|a.foo <=> b.foo}.reverse }
13
+ let(:store) { PStore.new(SORTER_TEST_STORE) }
14
+
15
+ it 'sorts and reverse an array by a given sort-method' do
16
+ expect(sorter.sort(items)).to eq(reversed)
17
+ end
18
+
19
+ it 'stores the method-name to a PStore' do
20
+ sorter.should_receive(:marshal_dump)
21
+ store.transaction do |s|
22
+ s[:sorter] = sorter
23
+ end
24
+ end
25
+
26
+ it 'loads the method-name and propper class from a PStore' do
27
+ _s = nil
28
+ store.transaction(true) { |r| _s = r[:sorter] }
29
+ expect(_s).to be_a SortedArray::ReverseSorter
30
+ expect(_s.method).to eq(:to_s)
31
+ end
32
+ 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.4
4
+ version: 0.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-06-09 00:00:00.000000000 Z
12
+ date: 2013-06-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -189,10 +189,12 @@ files:
189
189
  - TODO.md
190
190
  - lib/sorted_array.rb
191
191
  - lib/sorted_array/default_sorter.rb
192
+ - lib/sorted_array/reverse_sorter.rb
192
193
  - lib/sorted_array/sorted_array.rb
193
194
  - lib/sorted_array/version.rb
194
195
  - sorted_array.gemspec
195
196
  - spec/default_sorter_spec.rb
197
+ - spec/reversed_sorter_spec.rb
196
198
  - spec/sorted_array_spec.rb
197
199
  - spec/spec_helper.rb
198
200
  homepage: https://github.com/iboard/sorted_array
@@ -210,7 +212,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
210
212
  version: '0'
211
213
  segments:
212
214
  - 0
213
- hash: 1235662549708378242
215
+ hash: -3091631067158972171
214
216
  required_rubygems_version: !ruby/object:Gem::Requirement
215
217
  none: false
216
218
  requirements:
@@ -219,7 +221,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
219
221
  version: '0'
220
222
  segments:
221
223
  - 0
222
- hash: 1235662549708378242
224
+ hash: -3091631067158972171
223
225
  requirements: []
224
226
  rubyforge_project:
225
227
  rubygems_version: 1.8.25
@@ -228,6 +230,7 @@ specification_version: 3
228
230
  summary: SortedArray.new { |a,b| a.foo <=> b.foo }
229
231
  test_files:
230
232
  - spec/default_sorter_spec.rb
233
+ - spec/reversed_sorter_spec.rb
231
234
  - spec/sorted_array_spec.rb
232
235
  - spec/spec_helper.rb
233
236
  has_rdoc: