use_context 1.1.1 → 1.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 90aac299a67f5dbfbb1e2580c29021dafdd1ba06e0c4e6771a15faa6a673a3dc
4
- data.tar.gz: 4241b82b90fb4c902bae71dc2609f4651dc2eaf3ccd3cea1bddc54d08fdc1916
3
+ metadata.gz: 363ef63550d6dcfed54db9b34b3e940ad8d40b319702a6fc1aff79dba9039d78
4
+ data.tar.gz: d3cf0e008a950921ba1117e845472d4326fca8989013c0cbd99e72c0bb867353
5
5
  SHA512:
6
- metadata.gz: 7527e2b3c96f0470f4997bd366d3b8071f4a17a07b00d101e2fa6b868fa435a54e991fdd6997594374a989dd16b9dadd8deea1c1806da09749dd16307fd6b053
7
- data.tar.gz: 9d23e93d4ff8c0c85c7d618fd2d38f2d46617fd048ba2ec39069fb3f0d529c1caba5f8cef50dd7d80eacc3087385096fc548f771d2f6827fb04a062f1042892c
6
+ metadata.gz: 923d2555ea24de3247ed722ec82f3d36ec9e0b1515f1e00b268c6a4600ada5ca3e7f696121d36b3db8da57db685d579b7cb3af59119c9171621827181843d83f
7
+ data.tar.gz: 0af1b6f61e278ff6b7ae1e9d22ece69131016575841ba1aac8ea448e0489bfb0210593a5c7b4095a2c5508ce689ad8c829ed3021be5dd5c2d0b495a5823b4e50
data/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ # 1.2.0
2
+ * Augments the behavior of `use_context` to return the context object or the extracted values if a block is not provided:
3
+ ```ruby
4
+ use_context(:foo) # returns the context object
5
+ use_context(:foo, :bar) # => "bar"
6
+ use_context(:foo, :bar, :baz) # => ["bar", "baz"]
7
+ ```
8
+
1
9
  # 1.1.1
2
10
  * Fix bug in context extraction that would yield an array instead of a value when only a single key was specified.
3
11
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module UseContext
4
- VERSION = "1.1.1"
4
+ VERSION = "1.2.0"
5
5
  end
data/lib/use_context.rb CHANGED
@@ -85,9 +85,15 @@ module UseContext
85
85
  context = UseContext.context[name]&.context || EmptyContext.instance
86
86
 
87
87
  if keys.empty?
88
- yield context
88
+ block_given? ? yield(context) : context
89
89
  else
90
- yield(*keys.map { |key| context[key] })
90
+ values = keys.map { |key| context[key] }
91
+
92
+ if block_given?
93
+ yield(*values)
94
+ else
95
+ values.size == 1 ? values.first : values
96
+ end
91
97
  end
92
98
  end
93
99
  end
data/test/kernel_test.rb CHANGED
@@ -117,4 +117,27 @@ class KernelTest < Minitest::Test
117
117
  end
118
118
  end
119
119
  end
120
+
121
+ def test_use_context_returns_context_object_when_given_no_keys_and_no_block
122
+ provide_context(:test, { setting1: :a, setting2: :b }) do
123
+ context = use_context(:test)
124
+ assert_equal :a, context[:setting1]
125
+ assert_equal :b, context[:setting2]
126
+ end
127
+ end
128
+
129
+ def test_use_context_returns_extracted_values_when_given_keys_and_no_block
130
+ provide_context(:test, { setting1: :a, setting2: :b }) do
131
+ setting1, setting2 = use_context(:test, :setting1, :setting2)
132
+ assert_equal :a, setting1
133
+ assert_equal :b, setting2
134
+ end
135
+ end
136
+
137
+ def test_use_context_returns_single_extracted_value_when_given_a_key_and_no_block
138
+ provide_context(:test, { setting1: :a, setting2: :b }) do
139
+ setting1 = use_context(:test, :setting1)
140
+ assert_equal :a, setting1
141
+ end
142
+ end
120
143
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: use_context
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cameron Dutro