camel_snake_keys 0.0.1 → 0.0.2

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: b59fb04707ac126777c7bcddd787c8eb5092a2f1
4
- data.tar.gz: fa384ddde639e666f345d7cea7e17868b0d4bc08
3
+ metadata.gz: 358339f3f2e43e9dc6f84d134f42c52af2f681f6
4
+ data.tar.gz: cd06928f123ca31b93161f7fc1cd37a95b0f33c2
5
5
  SHA512:
6
- metadata.gz: a3ae6eb6a299c24329130a51cd96413aa8b74f139bd6c9526afa2178d5b6cfa546f4b851a4a434cec1710539b0499c260d73e792b8f9406b780158e9e8e518a8
7
- data.tar.gz: 6752d414e64075f8d0593913983238dfe2fdc8cbb340cdd4cac52ee6c81fa9f8e1bc966b45bcfdfd661114264a4093fd44ceac386570051c25848959f5d89508
6
+ metadata.gz: af6eaf1c168af5c0a2a951635b9ef8e3a797d80e259cb2e12763e9f30dd92080df008e83b2e7e8ddb902f72750c21d58c894d39472f8c00e6182f5f2dfddd1fe
7
+ data.tar.gz: 8557a12fbc8e93a6c14056bd1e37375145b8f9b3b0c49e78cd41888785d5327aac0d82d84474936562d28558f873e17f1580295dbcf83a56d4a0a0a68907ff15
@@ -0,0 +1,2 @@
1
+ service_name: travis-ci
2
+
data/.gitignore CHANGED
@@ -1,4 +1,5 @@
1
1
  .bundle/
2
+ coverage/
2
3
  log/*.log
3
4
  Gemfile.lock
4
5
  pkg/
@@ -0,0 +1,7 @@
1
+
2
+ 0.0.2 5/11/2016
3
+ ==============
4
+
5
+ ### Features
6
+
7
+ Preserve Hashie::Mashes.
data/Gemfile CHANGED
@@ -1,3 +1,6 @@
1
+ source 'https://rubygems.org'
1
2
  gem 'rspec'
2
3
  gem 'rake'
3
4
  gem 'activesupport'
5
+ gem 'hashie'
6
+ gem 'coveralls', require: false
@@ -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? HashWithIndifferentAccess || (data.kind_of? Hash && indifference)
43
- HashWithIndifferentAccess[data.map {|k, v| [if_camelize(k), camel_keys(v)] }]
44
- elsif data.kind_of?(Hash)
45
- Hash[data.map {|k, v| [if_camelize(k), camel_keys(v)] }]
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
@@ -1,5 +1,5 @@
1
1
  module CamelSnakeKeys
2
- VERSION = "0.0.1".freeze
2
+ VERSION = "0.0.2".freeze
3
3
 
4
4
  def self.version
5
5
  VERSION
@@ -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
@@ -1,3 +1,5 @@
1
+ require 'coveralls'
2
+ Coveralls.wear!
1
3
  require 'camel_snake_keys'
2
4
 
3
5
  RSpec.configure do |config|
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.1
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-03 00:00:00.000000000 Z
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.2.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.