bogo 0.1.24 → 0.1.26

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: a0ca167fdd60981d76b2fc29178e9f5ebdb31dd5
4
- data.tar.gz: 44b90c260e3099cdc593db60aac12fd146c48d65
3
+ metadata.gz: f7e400810bf3504865b80afad6d8382992d174ee
4
+ data.tar.gz: 975826f4297df7023982b96d0c5807dff072b0d0
5
5
  SHA512:
6
- metadata.gz: 19c043fd999d61d5ee2abe1dfb1b20db13f07a0aa22b206a91d08175c8847d903c6294bd919e4d5c73816c871c8872f9459c3314fdbf6732b241c28b79115e81
7
- data.tar.gz: 487018eaaf832cd79e7b318454f6c56cb624b2a9334f258c9fe47a3c27c7805340873cb91bbecc86ff0c70b5a098504f17a4f082f8fc6f9f7fed7bf1bec91312
6
+ metadata.gz: c8e162b1c52619ab538c1ac3e64f954738f0d646e04acd6fc7403762b68d79f4b938c6e98c78383ac53cf1c629e332ac5f315135a564063734e408bc9e295831
7
+ data.tar.gz: 9eee1d3be0b4219b9bd9713f6c693256f99e310476db4714687f7499272bb4e8c24d39da4305c5bedb196b931dc46fa418c03c82b5c4ccd0fe3a456aec4231e2
@@ -1,3 +1,6 @@
1
+ ## v0.1.26
2
+ * [Smash] Fix behavior around accessing falsey values
3
+
1
4
  ## v0.1.24
2
5
  * [Lazy] Allow multiple results from coercion output
3
6
 
@@ -6,6 +6,10 @@ module Bogo
6
6
 
7
7
  # Customized Hash
8
8
  class Smash < Hash
9
+
10
+ class NoValue; end
11
+ NO_VALUE = NoValue.new
12
+
9
13
  include Hashie::Extensions::IndifferentAccess
10
14
  include Hashie::Extensions::MergeInitializer
11
15
  include Hashie::Extensions::DeepMerge
@@ -40,17 +44,25 @@ module Bogo
40
44
  # Get value at given path
41
45
  #
42
46
  # @param args [String, Symbol] key path to walk
43
- # @return [Object, NilClass]
47
+ # @return [Object, NoValue]
44
48
  def retrieve(*args)
45
49
  args.inject(self) do |memo, key|
46
- if(memo.is_a?(Hash))
50
+ if(memo.is_a?(Hash) && memo.to_smash.has_key?(key.to_s))
47
51
  memo.to_smash[key]
48
52
  else
49
- nil
53
+ NO_VALUE
50
54
  end
51
55
  end
52
56
  end
53
- alias_method :get, :retrieve
57
+
58
+ # Get value at given path
59
+ #
60
+ # @param args [String, Symbol] key path to walk
61
+ # @return [Object, NilClass]
62
+ def get(*args)
63
+ val = retrieve(*args)
64
+ val == NO_VALUE ? nil : val
65
+ end
54
66
 
55
67
  # Fetch value at given path or return a default value
56
68
  #
@@ -58,7 +70,8 @@ module Bogo
58
70
  # @return [Object] value at key or default value
59
71
  def fetch(*args)
60
72
  default_value = args.pop
61
- retrieve(*args) || default_value
73
+ val = retrieve(*args)
74
+ val == NO_VALUE ? default_value : val
62
75
  end
63
76
 
64
77
  # Set value at given path
@@ -1,4 +1,4 @@
1
1
  module Bogo
2
2
  # Current library version
3
- VERSION = Gem::Version.new('0.1.24')
3
+ VERSION = Gem::Version.new('0.1.26')
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.1.24
4
+ version: 0.1.26
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Roberts
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-21 00:00:00.000000000 Z
11
+ date: 2015-05-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: hashie