ds_hash 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ODI2MDk2YWY5ZDI2NzdlZGQxM2IxNDA2NTk4ZWE2NDk2MjY2YWMyZg==
4
+ MjRmZGI5ZGRlZTUyMGI5MDhkNmU1M2IwMTMwZTBlODMwNGQzNTQ3Yw==
5
5
  data.tar.gz: !binary |-
6
- YmJmYzBiN2E3ZmFkMGVmZGEzZTIyOTIyZmM1NTVmNDVlNmU5NGU2OQ==
6
+ ZGIyNjRiMGFhZDIxZTk0NmIxZGNjZjUwYWFhMmQ3NGVhYjMyMzI0Nw==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- MmUyOWI4Nzk5MWNlMmExNDI0NDRlZTVkZGEwYjc5MjE1OTYzOWU5Y2NjOTM2
10
- Mjc0MzMxNWRmYTQ3ZDgxN2Y4Y2FhYWI5NGRhZWE1Y2QyYjc3MDUzMmYzYTE3
11
- ZjJlOTI2YTljN2Y4MjUyZjU2OGMyNzEwOTViYTZlMWRmZDJjYmE=
9
+ YTM3MWMyYWEzZGU1NzI2Yjc0YWIwNjI3NzQyMGQwY2EwZThhZGZiMWVmYWVk
10
+ ZTRhZjcyNTIyYjVlNzVhNDVkYTY5MjczMTBjMWFlZWNiYTE2ZmJiZDhiZmFk
11
+ NGRhMTNkN2YzMTZmNzliMjk5ZTJmODNlMjQ3OTQ4ZTcxNmU1MGY=
12
12
  data.tar.gz: !binary |-
13
- NzljOWY5OTBkNGRhOTEzNGU1NmE4N2QxZWExODU3YzMyOGRkMmU3NjAzMzk4
14
- NGZhMWY2ZGNhMGFmMDRiZGNjYmI5NTZjMWEwOTE3NzUyYWFlZWI5OGNhZjI4
15
- ODg2NzA1NTIyNjhlMDNmMjQwYTM1NjNkZTdkZjE1YjQzNDhkNzc=
13
+ MDZkODUxNWM1MWY5ZTUyNGU3NGM5NTY2YTlkMGI1MjlkYjczNWJlZTBhYWY4
14
+ YjhhYWY5NDMxYzNiYjdlZDc1NWVlMTY1ZjMxNzBiODI4NjE2OThiM2YzMTQy
15
+ ZTgyZTgxYzE3NzcxZGViNjUyM2JhYzdkMTVmOGM3MTY2NzQxMzE=
data/ds_hash.gemspec CHANGED
@@ -45,20 +45,20 @@ Gem::Specification.new do |s|
45
45
  s.add_development_dependency(%q<rspec>, ["~> 2.8.0"])
46
46
  s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
47
47
  s.add_development_dependency(%q<bundler>, ["~> 1.0"])
48
- s.add_development_dependency(%q<jeweler>, ["~> 1.8.7"])
48
+ # s.add_development_dependency(%q<jeweler>, ["~> 1.8.7"])
49
49
  s.add_development_dependency(%q<debugger>, [">= 0"])
50
50
  else
51
51
  s.add_dependency(%q<rspec>, ["~> 2.8.0"])
52
52
  s.add_dependency(%q<rdoc>, ["~> 3.12"])
53
53
  s.add_dependency(%q<bundler>, ["~> 1.0"])
54
- s.add_dependency(%q<jeweler>, ["~> 1.8.7"])
54
+ # s.add_dependency(%q<jeweler>, ["~> 1.8.7"])
55
55
  s.add_dependency(%q<debugger>, [">= 0"])
56
56
  end
57
57
  else
58
58
  s.add_dependency(%q<rspec>, ["~> 2.8.0"])
59
59
  s.add_dependency(%q<rdoc>, ["~> 3.12"])
60
60
  s.add_dependency(%q<bundler>, ["~> 1.0"])
61
- s.add_dependency(%q<jeweler>, ["~> 1.8.7"])
61
+ # s.add_dependency(%q<jeweler>, ["~> 1.8.7"])
62
62
  s.add_dependency(%q<debugger>, [">= 0"])
63
63
  end
64
64
  end
@@ -54,16 +54,20 @@ class Hash
54
54
 
55
55
  unless self.method_defined? 'deep_fetch'
56
56
  def deep_fetch *keys
57
+ def_value = keys.pop unless keys[keys.size-1].is_a? Symbol
57
58
  key = keys.shift
58
- if keys.empty?
59
+ if !key.is_a? Symbol
60
+ return nil
61
+ elsif keys.empty?
59
62
  if block_given?
60
- yield self[key] || {}
63
+ ret = yield self[key] || {}
61
64
  else
62
- self[key]
65
+ ret = self[key]
63
66
  end
64
67
  elsif self[key].is_a? Hash
65
- self[key].deep_fetch(*keys)
68
+ ret = self[key].deep_fetch(*keys)
66
69
  end
70
+ ret || def_value
67
71
  end
68
72
  end
69
73
 
@@ -1,3 +1,3 @@
1
1
  module DsHash
2
- VERSION = '1.0.0'
2
+ VERSION = '1.1.0'
3
3
  end
data/spec/ds_hash_spec.rb CHANGED
@@ -44,6 +44,10 @@ context "#deep_fetch" do
44
44
  it { hash_clean_values.deep_fetch(:g).should eq 3 }
45
45
  it { hash_clean_values.deep_fetch(:d).should eq nil }
46
46
  it { hash_clean_values.deep_fetch(:d, :a, :j).should eq nil }
47
+ it { hash_clean_values.deep_fetch(:d, []).should eq [] }
48
+ it { hash_clean_values.deep_fetch(:d, :a, :j, []).should eq [] }
49
+ it { hash_clean_values.deep_fetch(:d, 'a').should eq 'a' }
50
+ it { hash_clean_values.deep_fetch(:d, :a, :j, 'b').should eq 'b' }
47
51
  end
48
52
 
49
53
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ds_hash
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - nardele salomon
@@ -52,20 +52,6 @@ dependencies:
52
52
  - - ~>
53
53
  - !ruby/object:Gem::Version
54
54
  version: '1.0'
55
- - !ruby/object:Gem::Dependency
56
- name: jeweler
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ~>
60
- - !ruby/object:Gem::Version
61
- version: 1.8.7
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ~>
67
- - !ruby/object:Gem::Version
68
- version: 1.8.7
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: debugger
71
57
  requirement: !ruby/object:Gem::Requirement
@@ -123,5 +109,5 @@ rubyforge_project:
123
109
  rubygems_version: 2.2.1
124
110
  signing_key:
125
111
  specification_version: 4
126
- summary: Hash class extensions v. 1.0.0
112
+ summary: Hash class extensions v. 1.1.0
127
113
  test_files: []