abstractivator 0.7.0 → 0.8.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.
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