duck_puncher 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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: