abstractivator 0.7.0 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 98bd10f35bc275138d6a9510a6a53cbd99bddab8
4
- data.tar.gz: df501bfa7335e0a9b6743a7697690cbdcd3ae77a
3
+ metadata.gz: f2cea52cc38ca98adfa7d74c52cf4ba4f7092199
4
+ data.tar.gz: 312ae9d15598a24323ad84d5bf5ce504a15bc4a0
5
5
  SHA512:
6
- metadata.gz: eb9f24962f7a84d91d309d1fbbe5e118f922a111dbc877c3f066744befdcfef05b596de9b0015657fd65462ec4b064940b51911e807e47713a50e164a9c4f335
7
- data.tar.gz: e6f42fc405be407eeb1f72b5c360df98d2d83e5008b701396f913c4030076e421f7863ad534bf47f11463c5a937f3cd7ed6443b87d5ccc59db84573ef47413f9
6
+ metadata.gz: 8915f8bc9b77a6e3fba1bed0578b28d4a08e7bf99d7e96eff0698268c6e43dba869ea40a334646e38c670e094fcf42fe403f105f12016287c79c852a256ba984
7
+ data.tar.gz: 9b040c5a59386fc9ff8b10e484eb9fb0ad71c354378a61afe5a815973f69fe041469d28aebbda95517fd93444b93e98b86760bfae35105b0d9d8ef9cb10b8ddc
@@ -0,0 +1,16 @@
1
+ module Abstractivator
2
+ module Sort
3
+ def deep_sort_hash(obj)
4
+ case obj
5
+ when Hash
6
+ obj.sort.to_h.each_with_object({}) do |(k, v), a|
7
+ a[k] = deep_sort_hash(v)
8
+ end
9
+ when Array
10
+ obj.map(&method(:deep_sort_hash))
11
+ else
12
+ obj
13
+ end
14
+ end
15
+ end
16
+ end
@@ -1,3 +1,3 @@
1
1
  module Abstractivator
2
- VERSION = '0.7.0'
2
+ VERSION = '0.8.0'
3
3
  end
@@ -0,0 +1,54 @@
1
+ require 'abstractivator/sort'
2
+
3
+ describe Abstractivator::Sort do
4
+ include Abstractivator::Sort
5
+ describe '#deep_sort_hash' do
6
+ context 'when empty hash' do
7
+ let(:hash) { {} }
8
+ it 'returns empty hash' do
9
+ expect_same_order(deep_sort, {})
10
+ end
11
+ end
12
+
13
+ context 'when single level' do
14
+ let(:hash) { {one: 1, two: '2', three: 3, four: '4'} }
15
+ it 'returns new hash with the keys sorted alpha-numerically' do
16
+ expected = {four: '4', one: 1, three: 3, two: '2'}
17
+ expect_same_order(deep_sort, expected)
18
+ end
19
+ end
20
+
21
+ context 'when mult-level hash' do
22
+ let(:hash) { {one: 1, two: {three: {four: '4', five: 5}}, six: 6} }
23
+ it 'returns new hash with the keys sorted alpha-numerically' do
24
+ expected = {one: 1, six: 6, two: {three: {five: 5, four: '4'}}}
25
+ expect_same_order(deep_sort, expected)
26
+ end
27
+ end
28
+
29
+ context 'when contains an array' do
30
+ let(:hash) { {one: 1, two: [{three: {four: '4', five: 5}}, 'six', :seven], eight: 8} }
31
+ it 'returns new hash with the keys sorted alpha-numerically (does not sort arrays)' do
32
+ expected = {eight: 8, one: 1, two: [{three: {five: 5, four: '4'}}, 'six', :seven]}
33
+ expect_same_order(deep_sort, expected)
34
+ end
35
+ end
36
+
37
+ def deep_sort
38
+ deep_sort_hash(hash)
39
+ end
40
+
41
+ def expect_same_order(actual, expected)
42
+ case actual
43
+ when Hash
44
+ expect(actual.keys).to eql expected.keys
45
+ expect_same_order(actual.values, expected.values)
46
+ when Array
47
+ expect(actual.size).to eql expected.size
48
+ actual.zip(expected).each { |a, e| expect_same_order(a, e) }
49
+ else
50
+ expect(actual).to eql expected
51
+ end
52
+ end
53
+ end
54
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: abstractivator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Winton
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-09-23 00:00:00.000000000 Z
11
+ date: 2016-11-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -131,6 +131,7 @@ files:
131
131
  - lib/abstractivator/schedule.rb
132
132
  - lib/abstractivator/schedule/schedule.rb
133
133
  - lib/abstractivator/schedule/schedule_runner.rb
134
+ - lib/abstractivator/sort.rb
134
135
  - lib/abstractivator/trees.rb
135
136
  - lib/abstractivator/trees/block_collector.rb
136
137
  - lib/abstractivator/trees/recursive_delete.rb
@@ -152,6 +153,7 @@ files:
152
153
  - spec/lib/abstractivator/schedule/em_util.rb
153
154
  - spec/lib/abstractivator/schedule/schedule_runner_spec.rb
154
155
  - spec/lib/abstractivator/schedule/schedule_spec.rb
156
+ - spec/lib/abstractivator/sort_spec.rb
155
157
  - spec/lib/abstractivator/trees/recursive_delete_spec.rb
156
158
  - spec/lib/abstractivator/trees/tree_compare_spec.rb
157
159
  - spec/lib/abstractivator/trees/tree_map_spec.rb
@@ -196,6 +198,7 @@ test_files:
196
198
  - spec/lib/abstractivator/schedule/em_util.rb
197
199
  - spec/lib/abstractivator/schedule/schedule_runner_spec.rb
198
200
  - spec/lib/abstractivator/schedule/schedule_spec.rb
201
+ - spec/lib/abstractivator/sort_spec.rb
199
202
  - spec/lib/abstractivator/trees/recursive_delete_spec.rb
200
203
  - spec/lib/abstractivator/trees/tree_compare_spec.rb
201
204
  - spec/lib/abstractivator/trees/tree_map_spec.rb