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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f4c30166e7e8f3c7a661205455d9095e632f31a349ed72213b80876730c89ab9
4
- data.tar.gz: 7e38977774ad56f2ab3465088fb800137553b7d97037b126cb548fc64218fb1e
3
+ metadata.gz: 363ef63550d6dcfed54db9b34b3e940ad8d40b319702a6fc1aff79dba9039d78
4
+ data.tar.gz: d3cf0e008a950921ba1117e845472d4326fca8989013c0cbd99e72c0bb867353
5
5
  SHA512:
6
- metadata.gz: 01ec5bb17b6bf570b9114a482180b8b3946f902fae756670d457803fd2b9b067d1cf1999138c97d214e0a46fbdeadc170b0a7acea140f9f2209d84bc6b36fadf
7
- data.tar.gz: 216cfa9b71450937b76c00513f08901cf22c6b5744fde6df9978592fbc530328aa7c0cbeaf92230b03a53a21408ef5a20ae455d16193d5f9c69d1063bbaab94b
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module UseContext
4
- VERSION = "1.1.0"
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
@@ -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
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.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cameron Dutro