active_interaction 3.8.3 → 4.0.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 +157 -0
- data/README.md +93 -107
- data/lib/active_interaction.rb +1 -7
- data/lib/active_interaction/base.rb +23 -26
- data/lib/active_interaction/concerns/active_modelable.rb +1 -3
- data/lib/active_interaction/concerns/active_recordable.rb +1 -6
- data/lib/active_interaction/concerns/hashable.rb +0 -1
- data/lib/active_interaction/concerns/missable.rb +0 -1
- data/lib/active_interaction/concerns/runnable.rb +6 -12
- data/lib/active_interaction/errors.rb +3 -6
- data/lib/active_interaction/filter.rb +51 -37
- data/lib/active_interaction/filter_column.rb +0 -3
- data/lib/active_interaction/filters/abstract_date_time_filter.rb +34 -36
- data/lib/active_interaction/filters/abstract_numeric_filter.rb +27 -17
- data/lib/active_interaction/filters/array_filter.rb +57 -36
- data/lib/active_interaction/filters/boolean_filter.rb +26 -12
- data/lib/active_interaction/filters/date_filter.rb +1 -2
- data/lib/active_interaction/filters/date_time_filter.rb +1 -2
- data/lib/active_interaction/filters/decimal_filter.rb +10 -28
- data/lib/active_interaction/filters/file_filter.rb +6 -5
- data/lib/active_interaction/filters/float_filter.rb +1 -2
- data/lib/active_interaction/filters/hash_filter.rb +37 -27
- data/lib/active_interaction/filters/integer_filter.rb +7 -8
- data/lib/active_interaction/filters/interface_filter.rb +48 -14
- data/lib/active_interaction/filters/object_filter.rb +23 -50
- data/lib/active_interaction/filters/record_filter.rb +10 -35
- data/lib/active_interaction/filters/string_filter.rb +21 -12
- data/lib/active_interaction/filters/symbol_filter.rb +13 -7
- data/lib/active_interaction/filters/time_filter.rb +19 -22
- data/lib/active_interaction/grouped_input.rb +0 -3
- data/lib/active_interaction/inputs.rb +89 -0
- data/lib/active_interaction/modules/input_processor.rb +1 -4
- data/lib/active_interaction/modules/validation.rb +9 -12
- data/lib/active_interaction/version.rb +1 -3
- data/spec/active_interaction/base_spec.rb +13 -41
- data/spec/active_interaction/concerns/active_modelable_spec.rb +0 -2
- data/spec/active_interaction/concerns/active_recordable_spec.rb +0 -2
- data/spec/active_interaction/concerns/hashable_spec.rb +1 -3
- data/spec/active_interaction/concerns/missable_spec.rb +0 -2
- data/spec/active_interaction/concerns/runnable_spec.rb +9 -13
- data/spec/active_interaction/errors_spec.rb +4 -25
- data/spec/active_interaction/filter_column_spec.rb +0 -2
- data/spec/active_interaction/filter_spec.rb +0 -2
- data/spec/active_interaction/filters/abstract_date_time_filter_spec.rb +1 -3
- data/spec/active_interaction/filters/abstract_numeric_filter_spec.rb +1 -3
- data/spec/active_interaction/filters/array_filter_spec.rb +41 -15
- data/spec/active_interaction/filters/boolean_filter_spec.rb +58 -4
- data/spec/active_interaction/filters/date_filter_spec.rb +43 -3
- data/spec/active_interaction/filters/date_time_filter_spec.rb +43 -3
- data/spec/active_interaction/filters/decimal_filter_spec.rb +57 -3
- data/spec/active_interaction/filters/file_filter_spec.rb +1 -3
- data/spec/active_interaction/filters/float_filter_spec.rb +60 -4
- data/spec/active_interaction/filters/hash_filter_spec.rb +19 -9
- data/spec/active_interaction/filters/integer_filter_spec.rb +49 -7
- data/spec/active_interaction/filters/interface_filter_spec.rb +397 -24
- data/spec/active_interaction/filters/object_filter_spec.rb +23 -59
- data/spec/active_interaction/filters/record_filter_spec.rb +23 -49
- data/spec/active_interaction/filters/string_filter_spec.rb +15 -3
- data/spec/active_interaction/filters/symbol_filter_spec.rb +15 -3
- data/spec/active_interaction/filters/time_filter_spec.rb +65 -3
- data/spec/active_interaction/grouped_input_spec.rb +0 -2
- data/spec/active_interaction/i18n_spec.rb +3 -7
- data/spec/active_interaction/{modules/input_processor_spec.rb → inputs_spec.rb} +3 -5
- data/spec/active_interaction/integration/array_interaction_spec.rb +18 -22
- data/spec/active_interaction/integration/boolean_interaction_spec.rb +0 -2
- data/spec/active_interaction/integration/date_interaction_spec.rb +0 -2
- data/spec/active_interaction/integration/date_time_interaction_spec.rb +0 -2
- data/spec/active_interaction/integration/file_interaction_spec.rb +0 -2
- data/spec/active_interaction/integration/float_interaction_spec.rb +0 -2
- data/spec/active_interaction/integration/hash_interaction_spec.rb +0 -2
- data/spec/active_interaction/integration/integer_interaction_spec.rb +0 -2
- data/spec/active_interaction/integration/interface_interaction_spec.rb +1 -3
- data/spec/active_interaction/integration/object_interaction_spec.rb +0 -2
- data/spec/active_interaction/integration/string_interaction_spec.rb +0 -2
- data/spec/active_interaction/integration/symbol_interaction_spec.rb +0 -2
- data/spec/active_interaction/integration/time_interaction_spec.rb +14 -18
- data/spec/active_interaction/modules/validation_spec.rb +1 -3
- data/spec/spec_helper.rb +2 -6
- data/spec/support/concerns.rb +0 -2
- data/spec/support/filters.rb +13 -9
- data/spec/support/interactions.rb +22 -14
- metadata +77 -52
- data/lib/active_interaction/backports.rb +0 -59
- data/lib/active_interaction/filters/abstract_filter.rb +0 -19
- data/spec/active_interaction/filters/abstract_filter_spec.rb +0 -8
data/lib/active_interaction.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
# coding: utf-8
|
2
1
|
# frozen_string_literal: true
|
3
2
|
|
4
3
|
require 'active_model'
|
@@ -7,8 +6,6 @@ require 'active_model'
|
|
7
6
|
#
|
8
7
|
# @author Aaron Lasseigne <aaron.lasseigne@gmail.com>
|
9
8
|
# @author Taylor Fausak <taylor@fausak.me>
|
10
|
-
#
|
11
|
-
# @since 1.0.0
|
12
9
|
module ActiveInteraction
|
13
10
|
end
|
14
11
|
|
@@ -22,13 +19,12 @@ require 'active_interaction/concerns/missable'
|
|
22
19
|
require 'active_interaction/concerns/runnable'
|
23
20
|
|
24
21
|
require 'active_interaction/grouped_input'
|
22
|
+
require 'active_interaction/inputs'
|
25
23
|
|
26
|
-
require 'active_interaction/modules/input_processor'
|
27
24
|
require 'active_interaction/modules/validation'
|
28
25
|
|
29
26
|
require 'active_interaction/filter_column'
|
30
27
|
require 'active_interaction/filter'
|
31
|
-
require 'active_interaction/filters/abstract_filter'
|
32
28
|
require 'active_interaction/filters/interface_filter'
|
33
29
|
require 'active_interaction/filters/abstract_date_time_filter'
|
34
30
|
require 'active_interaction/filters/abstract_numeric_filter'
|
@@ -49,8 +45,6 @@ require 'active_interaction/filters/time_filter'
|
|
49
45
|
|
50
46
|
require 'active_interaction/base'
|
51
47
|
|
52
|
-
require 'active_interaction/backports'
|
53
|
-
|
54
48
|
I18n.load_path.unshift(
|
55
49
|
*Dir.glob(
|
56
50
|
File.expand_path(
|
@@ -1,4 +1,3 @@
|
|
1
|
-
# coding: utf-8
|
2
1
|
# frozen_string_literal: true
|
3
2
|
|
4
3
|
require 'active_support/core_ext/hash/indifferent_access'
|
@@ -28,7 +27,7 @@ module ActiveInteraction
|
|
28
27
|
# else
|
29
28
|
# outcome.errors
|
30
29
|
# end
|
31
|
-
class Base
|
30
|
+
class Base
|
32
31
|
include ActiveModelable
|
33
32
|
include ActiveRecordable
|
34
33
|
include Runnable
|
@@ -74,9 +73,7 @@ module ActiveInteraction
|
|
74
73
|
# @return [String, nil] The description.
|
75
74
|
def desc(desc = nil)
|
76
75
|
if desc.nil?
|
77
|
-
unless instance_variable_defined?(:@_interaction_desc)
|
78
|
-
@_interaction_desc = nil
|
79
|
-
end
|
76
|
+
@_interaction_desc = nil unless instance_variable_defined?(:@_interaction_desc)
|
80
77
|
else
|
81
78
|
@_interaction_desc = desc
|
82
79
|
end
|
@@ -88,17 +85,21 @@ module ActiveInteraction
|
|
88
85
|
#
|
89
86
|
# @return [Hash{Symbol => Filter}]
|
90
87
|
def filters
|
88
|
+
# rubocop:disable Naming/MemoizedInstanceVariableName
|
91
89
|
@_interaction_filters ||= {}
|
90
|
+
# rubocop:enable Naming/MemoizedInstanceVariableName
|
92
91
|
end
|
93
92
|
|
94
93
|
# @private
|
95
|
-
|
94
|
+
# rubocop:disable Style/MissingRespondToMissing
|
95
|
+
def method_missing(*args, &block)
|
96
96
|
super do |klass, names, options|
|
97
97
|
raise InvalidFilterError, 'missing attribute name' if names.empty?
|
98
98
|
|
99
99
|
names.each { |name| add_filter(klass, name, options, &block) }
|
100
100
|
end
|
101
101
|
end
|
102
|
+
# rubocop:enable Style/MissingRespondToMissing
|
102
103
|
|
103
104
|
private
|
104
105
|
|
@@ -106,9 +107,7 @@ module ActiveInteraction
|
|
106
107
|
# @param name [Symbol]
|
107
108
|
# @param options [Hash]
|
108
109
|
def add_filter(klass, name, options, &block)
|
109
|
-
if
|
110
|
-
raise InvalidFilterError, %("#{name}" is a reserved name)
|
111
|
-
end
|
110
|
+
raise InvalidFilterError, %("#{name}" is a reserved name) if ActiveInteraction::Inputs.reserved?(name)
|
112
111
|
|
113
112
|
initialize_filter(klass.new(name, options, &block))
|
114
113
|
end
|
@@ -133,7 +132,7 @@ module ActiveInteraction
|
|
133
132
|
other_filters.select! { |k, _| [*only].include?(k) } if only
|
134
133
|
other_filters.reject! { |k, _| [*except].include?(k) } if except
|
135
134
|
|
136
|
-
other_filters.
|
135
|
+
other_filters.each_value { |filter| initialize_filter(filter) }
|
137
136
|
end
|
138
137
|
|
139
138
|
# @param klass [Class]
|
@@ -146,13 +145,10 @@ module ActiveInteraction
|
|
146
145
|
# @param filter [Filter]
|
147
146
|
def initialize_filter(filter)
|
148
147
|
attribute = filter.name
|
149
|
-
if filters.key?(attribute)
|
150
|
-
warn "WARNING: Redefining #{name}##{attribute} filter"
|
151
|
-
end
|
148
|
+
warn "WARNING: Redefining #{name}##{attribute} filter" if filters.key?(attribute)
|
152
149
|
filters[attribute] = filter
|
153
150
|
|
154
151
|
attr_accessor attribute
|
155
|
-
define_method("#{attribute}?") { !public_send(attribute).nil? }
|
156
152
|
|
157
153
|
eagerly_evaluate_default(filter)
|
158
154
|
end
|
@@ -195,9 +191,10 @@ module ActiveInteraction
|
|
195
191
|
#
|
196
192
|
# @return [Hash{Symbol => Object}] All inputs passed to {.run} or {.run!}.
|
197
193
|
def inputs
|
198
|
-
self.class.filters
|
199
|
-
|
200
|
-
|
194
|
+
@inputs ||= self.class.filters
|
195
|
+
.each_key.with_object(ActiveInteraction::Inputs.new) do |name, h|
|
196
|
+
h[name] = public_send(name)
|
197
|
+
end.freeze
|
201
198
|
end
|
202
199
|
|
203
200
|
# Returns `true` if the given key was in the hash passed to {.run}.
|
@@ -294,10 +291,12 @@ module ActiveInteraction
|
|
294
291
|
@_interaction_inputs = inputs
|
295
292
|
|
296
293
|
inputs.each do |key, value|
|
297
|
-
|
294
|
+
next if ActiveInteraction::Inputs.reserved?(key)
|
295
|
+
|
296
|
+
populate_reader(key, value)
|
298
297
|
end
|
299
298
|
|
300
|
-
populate_filters(
|
299
|
+
populate_filters(ActiveInteraction::Inputs.process(inputs))
|
301
300
|
end
|
302
301
|
|
303
302
|
def populate_reader(key, value)
|
@@ -306,18 +305,16 @@ module ActiveInteraction
|
|
306
305
|
|
307
306
|
def populate_filters(inputs)
|
308
307
|
self.class.filters.each do |name, filter|
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
nil # #type_check will add errors if appropriate.
|
313
|
-
end
|
308
|
+
public_send("#{name}=", filter.clean(inputs[name], self))
|
309
|
+
rescue InvalidValueError, MissingValueError, NoDefaultError
|
310
|
+
nil # #type_check will add errors if appropriate.
|
314
311
|
end
|
315
312
|
end
|
316
313
|
|
317
314
|
def type_check
|
318
315
|
run_callbacks(:type_check) do
|
319
|
-
Validation.validate(self, self.class.filters, inputs).each do |
|
320
|
-
errors.add(
|
316
|
+
Validation.validate(self, self.class.filters, inputs).each do |attr, type, kwargs = {}|
|
317
|
+
errors.add(attr, type, **kwargs)
|
321
318
|
end
|
322
319
|
end
|
323
320
|
end
|
@@ -1,4 +1,3 @@
|
|
1
|
-
# coding: utf-8
|
2
1
|
# frozen_string_literal: true
|
3
2
|
|
4
3
|
module ActiveInteraction
|
@@ -34,8 +33,7 @@ module ActiveInteraction
|
|
34
33
|
false
|
35
34
|
end
|
36
35
|
|
37
|
-
#
|
38
|
-
module ClassMethods
|
36
|
+
module ClassMethods # rubocop:disable Style/Documentation
|
39
37
|
# @return [Symbol]
|
40
38
|
#
|
41
39
|
# @see ActiveModel::Translation#i18n_scope
|
@@ -1,4 +1,3 @@
|
|
1
|
-
# coding: utf-8
|
2
1
|
# frozen_string_literal: true
|
3
2
|
|
4
3
|
module ActiveInteraction
|
@@ -24,8 +23,6 @@ module ActiveInteraction
|
|
24
23
|
# # => nil
|
25
24
|
#
|
26
25
|
# @return [FilterColumn, nil]
|
27
|
-
#
|
28
|
-
# @since 1.2.0
|
29
26
|
def column_for_attribute(name)
|
30
27
|
filter = self.class.filters[name]
|
31
28
|
FilterColumn.intern(filter.database_column_type) if filter
|
@@ -49,9 +46,7 @@ module ActiveInteraction
|
|
49
46
|
# # => false
|
50
47
|
#
|
51
48
|
# @return [Boolean]
|
52
|
-
#
|
53
|
-
# @since 1.5.0
|
54
|
-
def has_attribute?(name) # rubocop:disable Style/PredicateName
|
49
|
+
def has_attribute?(name) # rubocop:disable Naming/PredicateName
|
55
50
|
self.class.filters.key?(name.to_sym)
|
56
51
|
end
|
57
52
|
end
|
@@ -1,4 +1,3 @@
|
|
1
|
-
# coding: utf-8
|
2
1
|
# frozen_string_literal: true
|
3
2
|
|
4
3
|
module ActiveInteraction
|
@@ -46,9 +45,7 @@ module ActiveInteraction
|
|
46
45
|
|
47
46
|
# @return [Boolean]
|
48
47
|
def valid?(*)
|
49
|
-
if instance_variable_defined?(:@_interaction_valid)
|
50
|
-
return @_interaction_valid
|
51
|
-
end
|
48
|
+
return @_interaction_valid if instance_variable_defined?(:@_interaction_valid)
|
52
49
|
|
53
50
|
super
|
54
51
|
end
|
@@ -75,12 +72,10 @@ module ActiveInteraction
|
|
75
72
|
return self.result = nil unless valid?
|
76
73
|
|
77
74
|
self.result = run_callbacks(:execute) do
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
errors.merge!(interrupt.errors)
|
83
|
-
end
|
75
|
+
execute
|
76
|
+
rescue Interrupt => e
|
77
|
+
errors.backtrace = e.errors.backtrace || e.backtrace
|
78
|
+
errors.merge!(e.errors)
|
84
79
|
end
|
85
80
|
end
|
86
81
|
|
@@ -98,8 +93,7 @@ module ActiveInteraction
|
|
98
93
|
raise e
|
99
94
|
end
|
100
95
|
|
101
|
-
#
|
102
|
-
module ClassMethods
|
96
|
+
module ClassMethods # rubocop:disable Style/Documentation
|
103
97
|
def new(*)
|
104
98
|
super.tap do |instance|
|
105
99
|
{
|
@@ -1,17 +1,15 @@
|
|
1
|
-
# coding: utf-8
|
2
1
|
# frozen_string_literal: true
|
3
2
|
|
4
|
-
#
|
5
3
|
module ActiveInteraction
|
6
4
|
# Top-level error class. All other errors subclass this.
|
7
5
|
#
|
8
6
|
# @return [Class]
|
9
7
|
Error = Class.new(StandardError)
|
10
8
|
|
11
|
-
# Raised if a
|
9
|
+
# Raised if a constant name is invalid.
|
12
10
|
#
|
13
11
|
# @return [Class]
|
14
|
-
|
12
|
+
InvalidNameError = Class.new(Error)
|
15
13
|
|
16
14
|
# Raised if a converter is invalid.
|
17
15
|
#
|
@@ -151,9 +149,8 @@ module ActiveInteraction
|
|
151
149
|
if attribute?(attribute) || attribute == :base
|
152
150
|
options = detail.dup
|
153
151
|
error = options.delete(:error)
|
154
|
-
options[:message] = message
|
155
152
|
|
156
|
-
add(attribute, error, options) unless added?(attribute, error, options)
|
153
|
+
add(attribute, error, **options.merge(message: message)) unless added?(attribute, error, **options)
|
157
154
|
else
|
158
155
|
merge_message!(attribute, message)
|
159
156
|
end
|
@@ -1,4 +1,3 @@
|
|
1
|
-
# coding: utf-8
|
2
1
|
# frozen_string_literal: true
|
3
2
|
|
4
3
|
require 'active_support/inflector'
|
@@ -78,16 +77,16 @@ module ActiveInteraction
|
|
78
77
|
# to the default value.
|
79
78
|
#
|
80
79
|
# @example
|
81
|
-
# ActiveInteraction::Filter.new(:example).clean(nil)
|
80
|
+
# ActiveInteraction::Filter.new(:example).clean(nil, nil)
|
82
81
|
# # => ActiveInteraction::MissingValueError: example
|
83
82
|
# @example
|
84
|
-
# ActiveInteraction::Filter.new(:example).clean(0)
|
83
|
+
# ActiveInteraction::Filter.new(:example).clean(0, nil)
|
85
84
|
# # => ActiveInteraction::InvalidValueError: example: 0
|
86
85
|
# @example
|
87
|
-
# ActiveInteraction::Filter.new(:example, default: nil).clean(nil)
|
86
|
+
# ActiveInteraction::Filter.new(:example, default: nil).clean(nil, nil)
|
88
87
|
# # => nil
|
89
88
|
# @example
|
90
|
-
# ActiveInteraction::Filter.new(:example, default: 0).clean(nil)
|
89
|
+
# ActiveInteraction::Filter.new(:example, default: 0).clean(nil, nil)
|
91
90
|
# # => ActiveInteraction::InvalidDefaultError: example: 0
|
92
91
|
#
|
93
92
|
# @param value [Object]
|
@@ -95,7 +94,9 @@ module ActiveInteraction
|
|
95
94
|
#
|
96
95
|
# @return [Object]
|
97
96
|
#
|
98
|
-
# @raise
|
97
|
+
# @raise [MissingValueError] If the value is missing and there is no
|
98
|
+
# default.
|
99
|
+
# @raise [InvalidValueError] If the value is invalid.
|
99
100
|
# @raise (see #default)
|
100
101
|
def clean(value, context)
|
101
102
|
value = cast(value, context)
|
@@ -120,7 +121,7 @@ module ActiveInteraction
|
|
120
121
|
#
|
121
122
|
# @param context [Base, nil]
|
122
123
|
#
|
123
|
-
# @return
|
124
|
+
# @return [Object]
|
124
125
|
#
|
125
126
|
# @raise [NoDefaultError] If the default is missing.
|
126
127
|
# @raise [InvalidDefaultError] If the default is invalid.
|
@@ -131,8 +132,8 @@ module ActiveInteraction
|
|
131
132
|
raise InvalidValueError if value.is_a?(GroupedInput)
|
132
133
|
|
133
134
|
cast(value, context)
|
134
|
-
rescue InvalidNestedValueError =>
|
135
|
-
raise InvalidDefaultError, "#{name}: #{value.inspect} (#{
|
135
|
+
rescue InvalidNestedValueError => e
|
136
|
+
raise InvalidDefaultError, "#{name}: #{value.inspect} (#{e})"
|
136
137
|
rescue InvalidValueError, MissingValueError
|
137
138
|
raise InvalidDefaultError, "#{name}: #{value.inspect}"
|
138
139
|
end
|
@@ -162,27 +163,6 @@ module ActiveInteraction
|
|
162
163
|
options.key?(:default)
|
163
164
|
end
|
164
165
|
|
165
|
-
# @param value [Object]
|
166
|
-
# @param _interaction [Base, nil]
|
167
|
-
#
|
168
|
-
# @return [Object]
|
169
|
-
#
|
170
|
-
# @raise [MissingValueError] If the value is missing and there is no
|
171
|
-
# default.
|
172
|
-
# @raise [InvalidValueError] If the value is invalid.
|
173
|
-
#
|
174
|
-
# @private
|
175
|
-
def cast(value, _interaction)
|
176
|
-
case value
|
177
|
-
when NilClass
|
178
|
-
raise MissingValueError, name unless default?
|
179
|
-
|
180
|
-
nil
|
181
|
-
else
|
182
|
-
raise InvalidValueError, "#{name}: #{describe(value)}"
|
183
|
-
end
|
184
|
-
end
|
185
|
-
|
186
166
|
# Gets the type of database column that would represent the filter data.
|
187
167
|
#
|
188
168
|
# @example
|
@@ -194,25 +174,59 @@ module ActiveInteraction
|
|
194
174
|
#
|
195
175
|
# @return [Symbol] A database column type. If no sensible mapping exists,
|
196
176
|
# returns `:string`.
|
197
|
-
#
|
198
|
-
# @since 1.2.0
|
199
177
|
def database_column_type
|
200
178
|
:string
|
201
179
|
end
|
202
180
|
|
203
181
|
private
|
204
182
|
|
205
|
-
#
|
206
|
-
|
183
|
+
# rubocop:disable Metrics/MethodLength
|
184
|
+
def cast(value, context, convert: true, reconstantize: true)
|
185
|
+
if matches?(value)
|
186
|
+
adjust_output(value, context)
|
187
|
+
# we can't use `nil?` because BasicObject doesn't have it
|
188
|
+
elsif value == nil # rubocop:disable Style/NilComparison
|
189
|
+
raise MissingValueError, name unless default?
|
190
|
+
|
191
|
+
nil
|
192
|
+
elsif reconstantize
|
193
|
+
send(__method__, value, context,
|
194
|
+
convert: convert,
|
195
|
+
reconstantize: false
|
196
|
+
)
|
197
|
+
elsif convert
|
198
|
+
send(__method__, convert(value), context,
|
199
|
+
convert: false,
|
200
|
+
reconstantize: reconstantize
|
201
|
+
)
|
202
|
+
else
|
203
|
+
raise InvalidValueError, "#{name}: #{describe(value)}"
|
204
|
+
end
|
205
|
+
end
|
206
|
+
# rubocop:enable Metrics/MethodLength
|
207
|
+
|
208
|
+
def matches?(_value)
|
209
|
+
false
|
210
|
+
end
|
211
|
+
|
212
|
+
def adjust_output(value, _context)
|
213
|
+
value
|
214
|
+
end
|
215
|
+
|
216
|
+
def convert(value)
|
217
|
+
value
|
218
|
+
end
|
219
|
+
|
220
|
+
def klass
|
221
|
+
@klass ||= Object.const_get(self.class.slug.to_s.camelize, false)
|
222
|
+
end
|
223
|
+
|
207
224
|
def describe(value)
|
208
225
|
value.inspect
|
209
226
|
rescue NoMethodError
|
210
227
|
"(Object doesn't support #inspect)"
|
211
228
|
end
|
212
229
|
|
213
|
-
# @param context [Base, nil]
|
214
|
-
#
|
215
|
-
# @return [Object]
|
216
230
|
def raw_default(context)
|
217
231
|
value = options.fetch(:default)
|
218
232
|
return value unless value.is_a?(Proc)
|