Module: DecoLite::OptionsValidatable
Overview
Methods to validate options.
Constant Summary
collapse
- OPTIONS =
[OPTION_FIELDS, OPTION_NAMESPACE, OPTION_REQUIRED_FIELDS].freeze
RequiredFieldsOptionable::OPTION_REQUIRED_FIELDS, RequiredFieldsOptionable::OPTION_REQUIRED_FIELDS_AUTO, RequiredFieldsOptionable::OPTION_REQUIRED_FIELDS_DEFAULT, RequiredFieldsOptionable::OPTION_REQUIRED_FIELDS_VALUES
NamespaceOptionable::OPTION_NAMESPACE, NamespaceOptionable::OPTION_NAMESPACE_DEFAULT
FieldsOptionable::OPTION_FIELDS, FieldsOptionable::OPTION_FIELDS_DEFAULT, FieldsOptionable::OPTION_FIELDS_MERGE, FieldsOptionable::OPTION_FIELDS_STRICT, FieldsOptionable::OPTION_FIELDS_VALUES
Instance Method Summary
collapse
Instance Method Details
#validate_option_fields!(fields:) ⇒ Object
36
37
38
39
40
41
42
|
# File 'lib/deco_lite/options_validatable.rb', line 36
def validate_option_fields!(fields:)
return if OPTION_FIELDS_VALUES.include?(fields)
raise ArgumentError,
"option :fields value or type is invalid. #{OPTION_FIELDS_VALUES} (Symbol) " \
"was expected, but '#{fields}' (#{fields.class}) was received."
end
|
#validate_option_keys!(options:) ⇒ Object
31
32
33
34
|
# File 'lib/deco_lite/options_validatable.rb', line 31
def validate_option_keys!(options:)
invalid_options = options.except(*OPTIONS)&.keys
raise ArgumentError, "One or more option keys were unrecognized: #{invalid_options}" unless invalid_options.blank?
end
|
#validate_option_namespace!(namespace:) ⇒ Object
44
45
46
47
48
49
50
|
# File 'lib/deco_lite/options_validatable.rb', line 44
def validate_option_namespace!(namespace:)
return if namespace.blank? || namespace.is_a?(Symbol)
raise ArgumentError, 'option :namespace value or type is invalid. A Symbol was expected, ' \
"but '#{namespace}' (#{namespace.class}) was received."
end
|
#validate_option_required_fields!(required_fields:) ⇒ Object
52
53
54
55
56
57
58
59
|
# File 'lib/deco_lite/options_validatable.rb', line 52
def validate_option_required_fields!(required_fields:)
return if required_fields.blank? || OPTION_REQUIRED_FIELDS_VALUES.include?(required_fields)
raise ArgumentError,
"option :fields_required value or type is invalid. #{OPTION_REQUIRED_FIELDS_VALUES} (Symbol) " \
"was expected, but '#{required_fields}' (#{required_fields.class}) was received."
end
|
#validate_options!(options:) ⇒ Object
16
17
18
19
20
21
22
23
24
25
|
# File 'lib/deco_lite/options_validatable.rb', line 16
def validate_options!(options:)
raise ArgumentError, 'options is not a Hash' unless options.is_a? Hash
validate_options_present! options: options
validate_option_keys! options: options
validate_option_fields! fields: options[OPTION_FIELDS]
validate_option_namespace! namespace: options[OPTION_NAMESPACE]
validate_option_required_fields! required_fields: options[OPTION_REQUIRED_FIELDS]
end
|
#validate_options_present!(options:) ⇒ Object
27
28
29
|
# File 'lib/deco_lite/options_validatable.rb', line 27
def validate_options_present!(options:)
raise ArgumentError, 'options is blank?' if options.blank?
end
|