configurations 1.3.4 → 1.3.5
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/README.md +1 -1
- data/lib/configurations.rb +1 -1
- data/lib/configurations/configuration.rb +33 -7
- data/test/configurations/test_configuration.rb +11 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 91fb60bb5d9360f44127b6fe04e9ee5a44fc8cc4
|
4
|
+
data.tar.gz: f6954851568a3a8dc02abb41867391ac9e83133d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e5e0337c82a36aecf0716baaad50605372f31048ae57cfcea910a5946e6e7a04b6345ce08b851fe08c9721b80ac958f9b15c94d7573a1f4b027ec3f0be7cafb9
|
7
|
+
data.tar.gz: 513d1a3804e612121dde365f0966edc22120b6d5ce7f17c8d173c14751d9de0967934111a05922afdf86770b16b1853b650b970bac3ce2f299bf83ace3c32ca3
|
data/README.md
CHANGED
@@ -206,7 +206,7 @@ MyGem.configuration.to_h #=> a Hash
|
|
206
206
|
|
207
207
|
### Some caveats
|
208
208
|
|
209
|
-
The `to_h` from above is along with `method_missing`, `object_id` and `initialize` the only purposely defined method which you can not overwrite with a configuration value.
|
209
|
+
The `to_h` from above is along with `method_missing`, `object_id` and `initialize` the only purposely defined API method which you can not overwrite with a configuration value.
|
210
210
|
Apart from these methods, you should be able to set pretty much any property name you like. `Configuration` inherits from `BasicObject`, so even `Kernel` and `Object` method names are available.
|
211
211
|
|
212
212
|
## Contributing
|
data/lib/configurations.rb
CHANGED
@@ -61,11 +61,11 @@ module Configurations
|
|
61
61
|
property = method.to_s[0..-2].to_sym
|
62
62
|
value = args.first
|
63
63
|
|
64
|
-
if
|
64
|
+
if _respond_to_writer?(method)
|
65
65
|
_assign!(property, value)
|
66
|
-
elsif
|
66
|
+
elsif _respond_to_property?(method)
|
67
67
|
@configuration[method]
|
68
|
-
elsif
|
68
|
+
elsif _can_delegate_to_kernel?(method)
|
69
69
|
::Kernel.send(method, *args, &block)
|
70
70
|
else
|
71
71
|
super
|
@@ -74,10 +74,8 @@ module Configurations
|
|
74
74
|
|
75
75
|
# Respond to missing according to the method_missing implementation
|
76
76
|
#
|
77
|
-
def
|
78
|
-
|
79
|
-
(!_is_writer?(method) && @_writeable || _configured?(method)) ||
|
80
|
-
::Kernel.respond_to?(method, include_private) || super
|
77
|
+
def respond_to?(method, include_private = false)
|
78
|
+
_respond_to_writer?(method) or _respond_to_property?(method) or _can_delegate_to_kernel?(method) or super
|
81
79
|
end
|
82
80
|
|
83
81
|
# Set the configuration to writeable or read only. Access to writer methods is only allowed within the
|
@@ -214,5 +212,33 @@ module Configurations
|
|
214
212
|
method.to_s.end_with?('=')
|
215
213
|
end
|
216
214
|
|
215
|
+
# @param [Symbol] method the method to test for
|
216
|
+
# @return [Boolean] whether the configuration responds to the given method writer
|
217
|
+
#
|
218
|
+
def _respond_to_writer?(method)
|
219
|
+
_is_writer?(method) and @_writeable and _configurable?(_property_from_writer(method))
|
220
|
+
end
|
221
|
+
|
222
|
+
# @param [Symbol] method the method to test for
|
223
|
+
# @return [Boolean] whether the configuration responds to the given property as a method
|
224
|
+
#
|
225
|
+
def _respond_to_property?(method)
|
226
|
+
not _is_writer?(method) and (@_writeable or _configured?(method))
|
227
|
+
end
|
228
|
+
|
229
|
+
# @param [Symbol] method the method to test for
|
230
|
+
# @return [Boolean] whether the configuration can delegate the given method to Kernel
|
231
|
+
#
|
232
|
+
def _can_delegate_to_kernel?(method)
|
233
|
+
::Kernel.respond_to?(method, true)
|
234
|
+
end
|
235
|
+
|
236
|
+
# @param [Symbol] method the writer method to turn into a property
|
237
|
+
# @return [Symbol] the property derived from the writer method
|
238
|
+
#
|
239
|
+
def _property_from_writer(method)
|
240
|
+
method.to_s[0..-2].to_sym
|
241
|
+
end
|
242
|
+
|
217
243
|
end
|
218
244
|
end
|
@@ -120,7 +120,17 @@ class TestConfiguration < Minitest::Test
|
|
120
120
|
end
|
121
121
|
end
|
122
122
|
|
123
|
-
def
|
123
|
+
def test_respond_to_on_writer_while_writeable
|
124
|
+
ConfigurationTestModule.configure do |c|
|
125
|
+
assert_equal true, c.respond_to?(:pah=)
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
def test_respond_to_on_writer_when_not_writeable
|
130
|
+
assert_equal false, @configuration.respond_to?(:pah=)
|
131
|
+
end
|
132
|
+
|
133
|
+
def test_respond_to_on_kernel_method
|
124
134
|
assert_equal true, @configuration.respond_to?(:puts)
|
125
135
|
end
|
126
136
|
|