fetchable 0.1.1 → 1.0.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.
@@ -1,33 +1,20 @@
1
1
  module Fetchable
2
- def fetch(key, not_found_value = no_default_given, &block)
3
- if not_found_value != no_default_given && block
2
+ NO_DEFAULT_GIVEN = Object.new
3
+
4
+ def fetch(key, not_found_value = NO_DEFAULT_GIVEN)
5
+ if not_found_value != NO_DEFAULT_GIVEN && block_given?
4
6
  raise ArgumentError.new("Cannot provide both a default arg and block to #fetch")
5
7
  end
6
8
 
7
9
  result = public_send(:[], key)
8
10
 
9
11
  if result.nil?
10
- default_value(key, not_found_value, &block)
11
- else
12
- result
13
- end
14
- end
12
+ return yield(key) if block_given?
13
+ return not_found_value unless not_found_value == NO_DEFAULT_GIVEN
15
14
 
16
- private
17
-
18
- def no_default_given
19
- @default ||= Object.new
20
- end
21
-
22
- def default_value(key, not_found_value, &block)
23
- if not_found_value == no_default_given
24
- if block
25
- block.call(key)
26
- else
27
- raise KeyError.new("key not found #{key}")
28
- end
15
+ raise KeyError.new("key not found #{key}")
29
16
  else
30
- not_found_value
17
+ result
31
18
  end
32
19
  end
33
20
  end
@@ -1,5 +1,5 @@
1
1
  require "fetchable"
2
2
 
3
3
  module Fetchable
4
- VERSION = "0.1.1"
4
+ VERSION = "1.0.0"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fetchable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 1.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-10-29 00:00:00.000000000 Z
13
+ date: 2013-11-07 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: bundler