bogo 0.2.4 → 0.2.6

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: 4504cb2673dd897223ce5fae70b1ceb64d515695
4
- data.tar.gz: ff417d3db98419a0a5a03f19b953268294f44920
3
+ metadata.gz: 509f58f7b55fade966863353064046832ea7d2d8
4
+ data.tar.gz: 17c71d9e4d7ce5d87783bd64ca74709dfc5db64c
5
5
  SHA512:
6
- metadata.gz: 119543ee94889f8c3d7b48132506e454e8a8753c37e5e9e15c2bf45d9d5c37e3aee4bc3a71d8ae5373bbc703b31d9376de34f39c36755d61754dd6354b5e681d
7
- data.tar.gz: 3e6c60c90577c10871e5a1930c88d125c9a4ad7031615be7cbe2967e565258971eaab03745caa506569e36f8ce0fa23ad5c8673e5756030bd76eed80b9703b3a
6
+ metadata.gz: 2e750ba668266417ccd98d3affea633ee6ecb6b1003eafab60c53c04fac7562278083dcf2b2bc6d0745283fc5728447503f5d2f33cf14790aed046db8a7baa8b
7
+ data.tar.gz: 589e3ec867abfcbfb52e89942118698133161b89aca8ba30912d803e493defdacdb686a477e44a6681b2342e64308fb4e0174c05c63210c25b68e7fe5a0e829b
@@ -1,3 +1,6 @@
1
+ # v0.2.6
2
+ * [Smash] Use Hash#dig if available to speed up access (GH-5)
3
+
1
4
  # v0.2.4
2
5
  * [Memoization] Refactor to remove Ruby 2.3 deprecation warnings
3
6
 
@@ -45,14 +45,29 @@ module Bogo
45
45
  #
46
46
  # @param args [String, Symbol] key path to walk
47
47
  # @return [Object, NoValue]
48
- def retrieve(*args)
49
- args.inject(self) do |memo, key|
50
- if(memo.is_a?(Hash) && memo.to_smash.has_key?(key.to_s))
51
- memo.to_smash[key]
48
+ # @note Ruby 2.3 introduced the Hash#dig method. Prefer
49
+ # it to injection method when available.
50
+ if(superclass.instance_methods.include?(:dig))
51
+ def retrieve(*args)
52
+ prefix = args[0, args.size - 1]
53
+ final = args.last
54
+ result = prefix.empty? ? self : dig(*prefix)
55
+ if(result.is_a?(Hash) && result.has_key?(final))
56
+ result[final]
52
57
  else
53
58
  NO_VALUE
54
59
  end
55
60
  end
61
+ else
62
+ def retrieve(*args)
63
+ args.inject(self) do |memo, key|
64
+ if(memo.is_a?(Hash) && memo.has_key?(key))
65
+ memo[key]
66
+ else
67
+ NO_VALUE
68
+ end
69
+ end
70
+ end
56
71
  end
57
72
 
58
73
  # Get value at given path
@@ -60,7 +75,7 @@ module Bogo
60
75
  # @param args [String, Symbol] key path to walk
61
76
  # @return [Object, NilClass]
62
77
  def get(*args)
63
- val = retrieve(*args)
78
+ val = args.empty? ? self : retrieve(*args)
64
79
  val == NO_VALUE ? nil : val
65
80
  end
66
81
 
@@ -1,4 +1,4 @@
1
1
  module Bogo
2
2
  # Current library version
3
- VERSION = Gem::Version.new('0.2.4')
3
+ VERSION = Gem::Version.new('0.2.6')
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bogo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.2.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Roberts
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-28 00:00:00.000000000 Z
11
+ date: 2017-01-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: hashie
@@ -123,7 +123,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
123
123
  version: '0'
124
124
  requirements: []
125
125
  rubyforge_project:
126
- rubygems_version: 2.5.1
126
+ rubygems_version: 2.4.8
127
127
  signing_key:
128
128
  specification_version: 4
129
129
  summary: Helper libraries