ds_hash 1.0.0 → 1.1.0

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 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: []