duck_puncher 0.0.1 → 0.0.2

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,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 80c49e8049aad2e813f48f613239d6d80fdefade
4
- data.tar.gz: 371f583b93256e291f80c948c7a5a05db31dca9f
3
+ metadata.gz: c38b59a2f62cb429b0015232e5d9eec8189cf5b6
4
+ data.tar.gz: 2a0480fc1fd8fca5beef9e87cec5ca4d502d56c6
5
5
  SHA512:
6
- metadata.gz: 7deeb08c94d2861f23e3e008c4b9c45d9b864002262ad4e6db571ed22d9af69b05dce040da8b90da3defba9ea24f24199d163c528a966e18f4d1dc1f3aabceb6
7
- data.tar.gz: acea8b5bf9a218cc4b7f3b7075e0d8873b941bbc7074935288c8d178b4a682c643fa60a8cf6da65abad51eab3577b6869ad1d1692e8895c26ad4fcbcae1be79b
6
+ metadata.gz: 007b4371f4f04f9a6e97d6db725e9c4594be91ce31faa16c67f7e0312bed43e2200254d0fde3c71c0140638f5b00f52216ff4b9636bbf1abe155b03bf0dfc690
7
+ data.tar.gz: 4706b9e13cb043c126ce09c0c2a46fad72cfa068d5f838adc5fdf58abcec0b1c7c364b5aca37ba79154a56accd11b1a4e50ba2fb67e5c0a65c43e3296eca5102
@@ -0,0 +1,25 @@
1
+ module DuckPuncher
2
+ module Hash
3
+ # http://coryodaniel.com/index.php/2009/12/30/ruby-getting-deeply-nested-values-from-a-hash-in-one-line-of-code/
4
+ def seek(*_keys_)
5
+ last_level = self
6
+ sought_value = nil
7
+
8
+ _keys_.each_with_index do |_key_, _idx_|
9
+ if last_level.is_a?(Hash) && last_level.has_key?(_key_)
10
+ if _idx_ + 1 == _keys_.length
11
+ sought_value = last_level[_key_]
12
+ else
13
+ last_level = last_level[_key_]
14
+ end
15
+ else
16
+ break
17
+ end
18
+ end
19
+
20
+ sought_value
21
+ end
22
+ end
23
+ end
24
+
25
+ Hash.send(:include, DuckPuncher::Hash)
@@ -1,3 +1,3 @@
1
1
  module DuckPuncher
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
data/lib/duck_puncher.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require 'duck_puncher/version'
2
2
  require 'duck_puncher/array'
3
3
  require 'duck_puncher/numeric'
4
+ require 'duck_puncher/hash'
4
5
 
5
6
  module DuckPuncher
6
7
  end
@@ -0,0 +1,12 @@
1
+ require 'minitest/autorun'
2
+ require 'duck_puncher'
3
+
4
+ class HashTest < MiniTest::Unit::TestCase
5
+ def test_seek
6
+ my_hash = {a: 1, b: {c: 2}}
7
+ assert_equal my_hash.seek(:a), 1
8
+ assert_equal my_hash.seek(:b, :a), nil
9
+ assert_equal my_hash.seek(:b, :c), 2
10
+ assert_equal my_hash.seek(:b), {c: 2}
11
+ end
12
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: duck_puncher
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
  - Ryan Buckley
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-03-19 00:00:00.000000000 Z
11
+ date: 2014-03-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -53,9 +53,11 @@ files:
53
53
  - duck_puncher.gemspec
54
54
  - lib/duck_puncher.rb
55
55
  - lib/duck_puncher/array.rb
56
+ - lib/duck_puncher/hash.rb
56
57
  - lib/duck_puncher/numeric.rb
57
58
  - lib/duck_puncher/version.rb
58
59
  - test/duck_puncher/array_test.rb
60
+ - test/duck_puncher/hash_test.rb
59
61
  - test/duck_puncher/numeric_test.rb
60
62
  homepage: ''
61
63
  licenses:
@@ -77,11 +79,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
77
79
  version: '0'
78
80
  requirements: []
79
81
  rubyforge_project:
80
- rubygems_version: 2.1.11
82
+ rubygems_version: 2.2.2
81
83
  signing_key:
82
84
  specification_version: 4
83
85
  summary: Duck punches Ruby
84
86
  test_files:
85
87
  - test/duck_puncher/array_test.rb
88
+ - test/duck_puncher/hash_test.rb
86
89
  - test/duck_puncher/numeric_test.rb
87
90
  has_rdoc: