module Stannum::Support::Optional
Methods for handling optional/required options.
@api private
Public Class Methods
resolve( optional: nil, required: nil, required_by_default: true, **options )
click to toggle source
@private
# File lib/stannum/support/optional.rb, line 12 def resolve( optional: nil, required: nil, required_by_default: true, **options ) default = validate_option(required_by_default, as: :required_by_default) options.merge( required: required?( default: default, optional: validate_option(optional, as: :optional), required: validate_option(required, as: :required) ) ) end
Private Class Methods
required?(default:, optional:, required:)
click to toggle source
# File lib/stannum/support/optional.rb, line 32 def required?(default:, optional:, required:) return default if optional.nil? && required.nil? return !optional if required.nil? return required if optional.nil? return required unless required == optional raise ArgumentError, 'required and optional must match', caller(1..-1) end
validate_option(option, as:)
click to toggle source
# File lib/stannum/support/optional.rb, line 44 def validate_option(option, as:) return option if option.nil? || option == true || option == false raise ArgumentError, "#{as} must be true or false", caller(1..-1) end
Public Instance Methods
optional?()
click to toggle source
@return [true, false] false if the property accepts nil values, otherwise
true.
# File lib/stannum/support/optional.rb, line 53 def optional? !options[:required] end
required?()
click to toggle source
@return [true, false] true if the property accepts nil values, otherwise
false.
# File lib/stannum/support/optional.rb, line 59 def required? options[:required] end
Private Instance Methods
resolve_required_option(**options)
click to toggle source
# File lib/stannum/support/optional.rb, line 65 def resolve_required_option(**options) Stannum::Support::Optional.resolve(**options) end