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 +4 -4
- data/CHANGELOG.md +8 -0
- data/lib/use_context/version.rb +1 -1
- data/lib/use_context.rb +8 -2
- data/test/kernel_test.rb +23 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 363ef63550d6dcfed54db9b34b3e940ad8d40b319702a6fc1aff79dba9039d78
|
4
|
+
data.tar.gz: d3cf0e008a950921ba1117e845472d4326fca8989013c0cbd99e72c0bb867353
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
|
data/lib/use_context/version.rb
CHANGED
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
|
-
|
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
|