use_context 1.1.0 → 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 +11 -0
- data/lib/use_context/version.rb +1 -1
- data/lib/use_context.rb +8 -2
- data/test/kernel_test.rb +31 -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,14 @@
|
|
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
|
+
|
9
|
+
# 1.1.1
|
10
|
+
* Fix bug in context extraction that would yield an array instead of a value when only a single key was specified.
|
11
|
+
|
1
12
|
# 1.1.0
|
2
13
|
* `use_context` now treats all argments after the context name as context keys to extract and yield to the block:
|
3
14
|
```ruby
|
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
@@ -101,6 +101,14 @@ class KernelTest < Minitest::Test
|
|
101
101
|
end
|
102
102
|
end
|
103
103
|
|
104
|
+
def test_use_context_can_extract_given_key
|
105
|
+
provide_context(:test, { setting1: :a, setting2: :b }) do
|
106
|
+
use_context(:test, :setting1) do |setting1|
|
107
|
+
assert_equal :a, setting1
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
104
112
|
def test_use_context_can_extract_given_keys
|
105
113
|
provide_context(:test, { setting1: :a, setting2: :b }) do
|
106
114
|
use_context(:test, :setting1, :setting2) do |setting1, setting2|
|
@@ -109,4 +117,27 @@ class KernelTest < Minitest::Test
|
|
109
117
|
end
|
110
118
|
end
|
111
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
|
112
143
|
end
|