camel_snake_keys 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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 358339f3f2e43e9dc6f84d134f42c52af2f681f6
4
- data.tar.gz: cd06928f123ca31b93161f7fc1cd37a95b0f33c2
3
+ metadata.gz: fd107c36f9563eb3887c4ab9b4805e2b6ee46796
4
+ data.tar.gz: 9bf618e70270ac65ea28c2ac3346193ba082d526
5
5
  SHA512:
6
- metadata.gz: af6eaf1c168af5c0a2a951635b9ef8e3a797d80e259cb2e12763e9f30dd92080df008e83b2e7e8ddb902f72750c21d58c894d39472f8c00e6182f5f2dfddd1fe
7
- data.tar.gz: 8557a12fbc8e93a6c14056bd1e37375145b8f9b3b0c49e78cd41888785d5327aac0d82d84474936562d28558f873e17f1580295dbcf83a56d4a0a0a68907ff15
6
+ metadata.gz: b8fe1fa43f82a6792ef7e5ac39d3952cf8647d2d326c5939c5f8db64ed70d3c97aa3b9a8d3d122b87fc7f5fa982e5ffacb6ef04b842daaa064ae87f82b2dbd57
7
+ data.tar.gz: 9598f2d06a0123881eff4afde3970a72fe1151409b3ed1c00f59cd04452f4a2b26a5c3eba6cd6c2532456bf9622e606bbeac3dde684b8d7b94ab74c756aa3406
@@ -1,3 +1,8 @@
1
+ 0.0.3 5/11/2016
2
+
3
+ ### Features
4
+
5
+ Preserve any descendent of Hash that accepts a Hash in its initialize method, as with ActiveSupport::HashWithIndifferentAccess and Hashie::Mash
1
6
 
2
7
  0.0.2 5/11/2016
3
8
  ==============
@@ -29,13 +29,8 @@ module CamelSnakeKeys
29
29
  data.map { |v| snake_keys(v) }
30
30
  elsif data.kind_of? Hash
31
31
  hash = Hash[data.map {|k, v| [if_underscore(k), snake_keys(v)] }]
32
- if data.kind_of? Hashie::Mash
33
- Hashie::Mash.new( hash )
34
- elsif data.kind_of? HashWithIndifferentAccess || indifference
35
- HashWithIndifferentAccess.new( hash )
36
- else
37
- hash
38
- end
32
+ hash = hash.with_indifferent_access if indifference
33
+ data.class == Hash ? hash : data.class.new(hash)
39
34
  else
40
35
  data
41
36
  end
@@ -46,13 +41,8 @@ module CamelSnakeKeys
46
41
  data.map { |v| camel_keys(v) }
47
42
  elsif data.kind_of? Hash
48
43
  hash = Hash[data.map {|k, v| [if_camelize(k), camel_keys(v)] }]
49
- if data.kind_of? Hashie::Mash
50
- Hashie::Mash.new( hash )
51
- elsif data.kind_of? HashWithIndifferentAccess || indifference
52
- HashWithIndifferentAccess.new( hash )
53
- else
54
- hash
55
- end
44
+ hash = hash.with_indifferent_access if indifference
45
+ data.class == Hash ? hash : data.class.new(hash)
56
46
  else
57
47
  data
58
48
  end
@@ -1,5 +1,5 @@
1
1
  module CamelSnakeKeys
2
- VERSION = "0.0.2".freeze
2
+ VERSION = "0.0.3".freeze
3
3
 
4
4
  def self.version
5
5
  VERSION
@@ -4,51 +4,109 @@ RSpec.describe Enumerable do
4
4
 
5
5
  context "arrays" do
6
6
  let(:snaked) { [[{true=>false, 1=>1.2, 1.2=>1, nil=>2, :foo_bar=>1, "dark_matter"=>[{:dark_energy=>"aBc", "baz_qux"=>"Frob."}]}]] }
7
- let(:camelized) { [[{true=>false, 1=>1.2, 1.2=>1, nil=>2, :foo_bar=>1, "dark_matter"=>[{:dark_energy=>"aBc", "baz_qux"=>"Frob."}]}]] }
7
+ let(:camelized) { [[{true=>false, 1=>1.2, 1.2=>1, nil=>2, :fooBar=>1, "darkMatter"=>[{:darkEnergy=>"aBc", "bazQux"=>"Frob."}]}]] }
8
+
8
9
  it "should snake case keys of hashes" do
9
10
  camelized.with_snake_keys.should eq snaked
10
11
  end
11
12
 
12
13
  it "should camel case keys of hashes" do
13
- snaked.with_snake_keys.should eq camelized
14
+ snaked.with_camel_keys.should eq camelized
14
15
  end
15
16
  end
16
17
 
17
18
  context "hashes" do
18
19
  let(:snaked) { {false=>true, 1=>1.2, 1.2=>1, nil=>2, :foo_bar=>1, "dark_matter"=>[{:dark_energy=>"aBc", "baz_qux"=>"Frob."}]} }
19
- let(:camelized) { {false=>true, 1=>1.2, 1.2=>1, nil=>2, :foo_bar=>1, "dark_matter"=>[{:dark_energy=>"aBc", "baz_qux"=>"Frob."}]} }
20
+ let(:camelized) { {false=>true, 1=>1.2, 1.2=>1, nil=>2, :fooBar=>1, "darkMatter"=>[{:darkEnergy=>"aBc", "bazQux"=>"Frob."}]} }
21
+
20
22
  it "should snake case keys of hashes" do
21
- camelized.with_snake_keys.should eq snaked
23
+ hash = camelized.with_snake_keys
24
+ hash.class.should == Hash
25
+ hash.should eq snaked
22
26
  end
23
27
 
24
28
  it "should camel case keys of hashes" do
25
- snaked.with_snake_keys.should eq camelized
29
+ hash = snaked.with_camel_keys
30
+ hash.class.should == Hash
31
+ hash.should eq camelized
32
+ end
33
+
34
+ it "should snake case keys of hashes with indifference" do
35
+ hash = camelized.with_snake_keys(true)
36
+ hash.class.should == HashWithIndifferentAccess
37
+ hash.should eq snaked.with_indifferent_access
38
+ hash[:foo_bar].should eq hash["foo_bar"]
26
39
  end
40
+
41
+ it "should camel case keys of hashes with indifference" do
42
+ hash = snaked.with_camel_keys(true)
43
+ hash.class.should == HashWithIndifferentAccess
44
+ hash.should eq camelized.with_indifferent_access
45
+ hash["fooBar"].should eq hash[:fooBar]
46
+ end
47
+
27
48
  end
28
49
 
29
50
  context "hashes with indifferent access" do
30
51
  let(:snaked) { {1.2=>1, 1=>1.2, nil=>2, :foo_bar=>1, "dark_matter"=>[{:dark_energy=>"aBc", "baz_qux"=>"Frob."}]}.with_indifferent_access }
31
- let(:camelized) { { 1.2=>1, 1=>1.2, nil=>2, :foo_bar=>1, "dark_matter"=>[{:dark_energy=>"aBc", "baz_qux"=>"Frob."}]}.with_indifferent_access }
52
+ let(:camelized) { { 1.2=>1, 1=>1.2, nil=>2, :fooBar=>1, "darkMatter"=>[{:darkEnergy=>"aBc", "bazQux"=>"Frob."}]}.with_indifferent_access }
32
53
 
33
54
  it "should snake case keys of hashes" do
34
- camelized.with_snake_keys.should eq snaked
55
+ hash = camelized.with_snake_keys
56
+ hash.class.should == HashWithIndifferentAccess
57
+ hash.should eq snaked
35
58
  end
36
59
 
37
60
  it "should camel case keys of hashes" do
38
- snaked.with_snake_keys.should eq camelized
61
+ hash = snaked.with_camel_keys
62
+ hash.class.should == HashWithIndifferentAccess
63
+ hash.should eq camelized
39
64
  end
65
+
66
+ it "should snake case keys of hashes with indifference" do
67
+ hash = camelized.with_snake_keys(true)
68
+ hash.class.should == HashWithIndifferentAccess
69
+ hash.should eq snaked
70
+ end
71
+
72
+ it "should camel case keys of hashes with indifference" do
73
+ hash = snaked.with_camel_keys(true)
74
+ hash.class.should == HashWithIndifferentAccess
75
+ hash.should eq camelized
76
+ end
77
+
40
78
  end
41
79
 
42
80
  context "mashes" do
43
81
  let(:snaked) { Hashie::Mash.new({1.2=>1, 1=>1.2, nil=>2, :foo_bar=>1, "dark_matter"=>[{:dark_energy=>"aBc", "baz_qux"=>"Frob."}]}) }
44
- let(:camelized) { Hashie::Mash.new({ 1.2=>1, 1=>1.2, nil=>2, :foo_bar=>1, "dark_matter"=>[{:dark_energy=>"aBc", "baz_qux"=>"Frob."}]}) }
82
+ let(:camelized) { Hashie::Mash.new({ 1.2=>1, 1=>1.2, nil=>2, :fooBar=>1, "darkMatter"=>[{:darkEnergy=>"aBc", "bazQux"=>"Frob."}]}) }
45
83
 
46
84
  it "should snake case keys of hashes" do
47
- camelized.with_snake_keys.should eq snaked
85
+ hash = camelized.with_snake_keys
86
+ hash.class.should == Hashie::Mash
87
+ hash.should eq snaked
88
+ hash["fooBar"].should == hash[:fooBar]
48
89
  end
49
90
 
50
91
  it "should camel case keys of hashes" do
51
- snaked.with_snake_keys.should eq camelized
92
+ hash = snaked.with_camel_keys
93
+ hash.class.should == Hashie::Mash
94
+ hash.should eq camelized
95
+ hash["foo_bar"].should == hash[:foo_bar]
96
+ end
97
+
98
+ it "should snake case keys of hashes with redundant indifference" do
99
+ hash = camelized.with_snake_keys(true)
100
+ hash.class.should == Hashie::Mash
101
+ hash.should eq snaked
102
+ hash["foo_bar"].should == hash[:foo_bar]
103
+ end
104
+
105
+ it "should camel case keys of hashes with redundant indifference" do
106
+ hash = snaked.with_camel_keys(true)
107
+ hash.class.should == Hashie::Mash
108
+ hash.should eq camelized
109
+ hash["foo_bar"].should == hash[:foo_bar]
52
110
  end
53
111
 
54
112
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: camel_snake_keys
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josh Buermann
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-05-11 00:00:00.000000000 Z
11
+ date: 2016-05-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport