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 +7 -0
- data/.gitignore +18 -0
- data/README.md +12 -0
- data/lib/symbolize_keys_recursively.rb +2 -0
- data/lib/symbolize_keys_recursively/array.rb +13 -0
- data/lib/symbolize_keys_recursively/hash.rb +21 -0
- data/spec/symbolize_keys_recursively/array_spec.rb +23 -0
- data/spec/symbolize_keys_recursively/hash_spec.rb +48 -0
- data/symbolize_keys_recursively-1.0.gem +0 -0
- data/symbolize_keys_recursively.gemspec +19 -0
- metadata +56 -0
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
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,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
|