camel_snake_keys 0.0.1 → 0.0.2
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 +4 -4
- data/.coveralls.yml +2 -0
- data/.gitignore +1 -0
- data/CHANGELOG.md +7 -0
- data/Gemfile +3 -0
- data/lib/camel_snake_keys.rb +18 -8
- data/lib/version.rb +1 -1
- data/spec/lib/camel_snake_keys_spec.rb +14 -0
- data/spec/test_helper.rb +2 -0
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 358339f3f2e43e9dc6f84d134f42c52af2f681f6
|
4
|
+
data.tar.gz: cd06928f123ca31b93161f7fc1cd37a95b0f33c2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: af6eaf1c168af5c0a2a951635b9ef8e3a797d80e259cb2e12763e9f30dd92080df008e83b2e7e8ddb902f72750c21d58c894d39472f8c00e6182f5f2dfddd1fe
|
7
|
+
data.tar.gz: 8557a12fbc8e93a6c14056bd1e37375145b8f9b3b0c49e78cd41888785d5327aac0d82d84474936562d28558f873e17f1580295dbcf83a56d4a0a0a68907ff15
|
data/.coveralls.yml
ADDED
data/.gitignore
CHANGED
data/CHANGELOG.md
ADDED
data/Gemfile
CHANGED
data/lib/camel_snake_keys.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'active_support/core_ext/hash'
|
2
2
|
require 'active_support/core_ext/string/inflections'
|
3
|
+
require 'hashie/mash'
|
3
4
|
|
4
5
|
module CamelSnakeKeys
|
5
6
|
class << self
|
@@ -26,11 +27,15 @@ module CamelSnakeKeys
|
|
26
27
|
def snake_keys(data, indifference=false)
|
27
28
|
if data.kind_of? Array
|
28
29
|
data.map { |v| snake_keys(v) }
|
29
|
-
elsif data.kind_of? HashWithIndifferentAccess || (data.kind_of? Hash && indifference)
|
30
|
-
HashWithIndifferentAccess[data.map {|k, v| [if_underscore(k), snake_keys(v)] }]
|
31
30
|
elsif data.kind_of? Hash
|
32
|
-
Hash[data.map {|k, v| [if_underscore(k), snake_keys(v)]
|
33
|
-
|
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
|
34
39
|
else
|
35
40
|
data
|
36
41
|
end
|
@@ -39,10 +44,15 @@ module CamelSnakeKeys
|
|
39
44
|
def camel_keys(data, indifference=false)
|
40
45
|
if data.kind_of? Array
|
41
46
|
data.map { |v| camel_keys(v) }
|
42
|
-
elsif data.kind_of?
|
43
|
-
|
44
|
-
|
45
|
-
|
47
|
+
elsif data.kind_of? Hash
|
48
|
+
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
|
46
56
|
else
|
47
57
|
data
|
48
58
|
end
|
data/lib/version.rb
CHANGED
@@ -39,4 +39,18 @@ RSpec.describe Enumerable do
|
|
39
39
|
end
|
40
40
|
end
|
41
41
|
|
42
|
+
context "mashes" do
|
43
|
+
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."}]}) }
|
45
|
+
|
46
|
+
it "should snake case keys of hashes" do
|
47
|
+
camelized.with_snake_keys.should eq snaked
|
48
|
+
end
|
49
|
+
|
50
|
+
it "should camel case keys of hashes" do
|
51
|
+
snaked.with_snake_keys.should eq camelized
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
55
|
+
|
42
56
|
end
|
data/spec/test_helper.rb
CHANGED
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.
|
4
|
+
version: 0.0.2
|
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
|
+
date: 2016-05-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -45,8 +45,10 @@ executables: []
|
|
45
45
|
extensions: []
|
46
46
|
extra_rdoc_files: []
|
47
47
|
files:
|
48
|
+
- ".coveralls.yml"
|
48
49
|
- ".gitignore"
|
49
50
|
- ".rubocop.yml"
|
51
|
+
- CHANGELOG.md
|
50
52
|
- Gemfile
|
51
53
|
- README.md
|
52
54
|
- Rakefile
|
@@ -75,7 +77,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
75
77
|
version: '0'
|
76
78
|
requirements: []
|
77
79
|
rubyforge_project:
|
78
|
-
rubygems_version: 2.
|
80
|
+
rubygems_version: 2.4.5
|
79
81
|
signing_key:
|
80
82
|
specification_version: 4
|
81
83
|
summary: Convert nested data structure hash keys between camel and snake case.
|