symbolize_keys_recursively 1.1

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: a6a3f1fad6121c0cf8bb5c741c6007ee8e0c4a33
4
+ data.tar.gz: 79ae89da67def87c99f6c5b8cdad32595362072d
5
+ SHA512:
6
+ metadata.gz: ad53ca7dd47da5ab7b7be78a65ab7c19765cc145cb763bd897b50d18b2b68119566d6425df3d237ddee54447556287ad2dbf183521ad325230766b6c5f949d90
7
+ data.tar.gz: 1637d16b95ea062f9229a76713b7a2ebd242c3f6b09467a112795a7f7308246f7cf21051ce860d08624486dcb1e160ff3f54d6cdf7bd48b541ef490e4eb36410
data/.gitignore ADDED
@@ -0,0 +1,18 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ coverage
6
+ InstalledFiles
7
+ lib/bundler/man
8
+ pkg
9
+ rdoc
10
+ spec/reports
11
+ test/tmp
12
+ test/version_tmp
13
+ tmp
14
+
15
+ # YARD artifacts
16
+ .yardoc
17
+ _yardoc
18
+ doc/
data/README.md ADDED
@@ -0,0 +1,12 @@
1
+ symbolize_keys_recursively
2
+ ==========================
3
+
4
+ Recursively symbolize keys in Hashes and Arrays
5
+
6
+ ```ruby
7
+ car = {"make" => "Subaru", "model" => "Forester"}
8
+ car.symbolize_keys_recursively!
9
+
10
+ puts car.inspect # {:make => "...", :model => "..."}
11
+
12
+ ```
@@ -0,0 +1,2 @@
1
+ require_relative 'symbolize_keys_recursively/array'
2
+ require_relative 'symbolize_keys_recursively/hash'
@@ -0,0 +1,13 @@
1
+ class Array
2
+ def symbolize_keys_recursively!
3
+ self.collect! do |value|
4
+ if !value.nil? && value.is_a?(Hash)
5
+ value.symbolize_keys_recursively!
6
+ elsif !value.nil? && value.is_a?(Array)
7
+ value.symbolize_keys_recursively!
8
+ end
9
+ value
10
+ end
11
+ self
12
+ end
13
+ end
@@ -0,0 +1,21 @@
1
+ class Hash
2
+ def symbolize_keys!
3
+ keys.each do |key|
4
+ self[(key.to_sym rescue key) || key] = delete(key)
5
+ end
6
+ self
7
+ end
8
+
9
+ def symbolize_keys_recursively!
10
+ symbolize_keys!
11
+ values.each do |value|
12
+ next if value.nil?
13
+ if value.is_a?(Hash)
14
+ value.symbolize_keys_recursively!
15
+ elsif value.is_a?(Array)
16
+ value.symbolize_keys_recursively!
17
+ end
18
+ end
19
+ self
20
+ end
21
+ end
@@ -0,0 +1,23 @@
1
+ require 'rubygems'
2
+ require 'rspec'
3
+ require 'rspec-expectations'
4
+
5
+ $:.push File.expand_path("../../lib", File.dirname(__FILE__))
6
+ require 'symbolize_keys_recursively'
7
+
8
+ describe Array do
9
+ describe "symbolize_keys_recursively!" do
10
+ it "returns the same object" do
11
+ array = []
12
+ array.symbolize_keys_recursively!.should eql array
13
+ end
14
+
15
+ it "does nothing for empty array" do
16
+ [].symbolize_keys_recursively! === []
17
+ end
18
+
19
+ it "converts nested arrays and hashes" do
20
+ [ [ {"a" => "b"} ] ].symbolize_keys_recursively! === [ [ {:a => "b"} ] ]
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,48 @@
1
+ require 'rubygems'
2
+ require 'rspec'
3
+ require 'rspec-expectations'
4
+
5
+ $:.push File.expand_path("../../lib", File.dirname(__FILE__))
6
+ require 'symbolize_keys_recursively'
7
+
8
+ describe Hash do
9
+ describe "symbolize_keys!" do
10
+ it "returns the same object" do
11
+ hash = {}
12
+ hash.symbolize_keys!.should eql hash
13
+ end
14
+
15
+ it "does nothing for empty hash" do
16
+ {}.symbolize_keys! === {}
17
+ end
18
+
19
+ it "converts string keys to symbols" do
20
+ {"a" => "b"}.symbolize_keys! === {:a => "b"}
21
+ {"a" => "b", "c" => 2.0}.symbolize_keys! === {:a => "b", :c => 2.0}
22
+ end
23
+
24
+ it "ignores non-string keys" do
25
+ {2.0 => "b"}.symbolize_keys! === {2.0 => "b"}
26
+ {[] => "b", {} => 2.0}.symbolize_keys! === {[] => "b", {} => 2.0}
27
+ end
28
+ end
29
+
30
+ describe "symbolize_keys_recursively!" do
31
+ it "returns the same object" do
32
+ hash = {}
33
+ hash.symbolize_keys_recursively!.should eql hash
34
+ end
35
+
36
+ it "does nothing for empty hash" do
37
+ {}.symbolize_keys_recursively! === {}
38
+ end
39
+
40
+ it "converts nested hashes" do
41
+ {"a" => {"b" => "c"}}.symbolize_keys_recursively! === {:a => {:b => "c"}}
42
+ end
43
+
44
+ it "converts nested arrays" do
45
+ {"a" => [{"b" => "c"}]}.symbolize_keys_recursively! === {:a => [{:b => "c"}]}
46
+ end
47
+ end
48
+ end
Binary file
@@ -0,0 +1,19 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "symbolize_keys_recursively"
4
+
5
+ Gem::Specification.new do |gem|
6
+ gem.name = "symbolize_keys_recursively"
7
+ gem.version = '1.1'
8
+ gem.authors = ["Glenn Nagel"]
9
+ gem.email = ["glenn@mercury-wireless.com"]
10
+ gem.homepage = "https://github.com/gnagel/symbolize_keys_recursively"
11
+ gem.summary = %q{Recursively symbolize keys for Hashes and Arrays}
12
+ gem.description = %q{}
13
+ gem.license = 'MIT'
14
+
15
+ gem.files = `git ls-files`.split($/)
16
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
+ gem.require_paths = ["lib", "tasks"]
19
+ end
metadata ADDED
@@ -0,0 +1,56 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: symbolize_keys_recursively
3
+ version: !ruby/object:Gem::Version
4
+ version: '1.1'
5
+ platform: ruby
6
+ authors:
7
+ - Glenn Nagel
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-05-26 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: ''
14
+ email:
15
+ - glenn@mercury-wireless.com
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - .gitignore
21
+ - README.md
22
+ - lib/symbolize_keys_recursively.rb
23
+ - lib/symbolize_keys_recursively/array.rb
24
+ - lib/symbolize_keys_recursively/hash.rb
25
+ - spec/symbolize_keys_recursively/array_spec.rb
26
+ - spec/symbolize_keys_recursively/hash_spec.rb
27
+ - symbolize_keys_recursively-1.0.gem
28
+ - symbolize_keys_recursively.gemspec
29
+ homepage: https://github.com/gnagel/symbolize_keys_recursively
30
+ licenses:
31
+ - MIT
32
+ metadata: {}
33
+ post_install_message:
34
+ rdoc_options: []
35
+ require_paths:
36
+ - lib
37
+ - tasks
38
+ required_ruby_version: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - '>='
41
+ - !ruby/object:Gem::Version
42
+ version: '0'
43
+ required_rubygems_version: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ requirements: []
49
+ rubyforge_project:
50
+ rubygems_version: 2.0.3
51
+ signing_key:
52
+ specification_version: 4
53
+ summary: Recursively symbolize keys for Hashes and Arrays
54
+ test_files:
55
+ - spec/symbolize_keys_recursively/array_spec.rb
56
+ - spec/symbolize_keys_recursively/hash_spec.rb