class ContractedValue::Attribute
Attributes
contract[R]
default_value[R]
name[R]
refrigeration_mode[R]
Public Class Methods
new(*)
click to toggle source
Calls superclass method
# File lib/contracted_value/core.rb, line 134 def self.new(*) ::IceNine.deep_freeze(super) end
new( name:, contract:, refrigeration_mode:, default_value: )
click to toggle source
# File lib/contracted_value/core.rb, line 138 def initialize( name:, contract:, refrigeration_mode:, default_value: ) @name = name @contract = contract @refrigeration_mode = refrigeration_mode @default_value = default_value raise_error_if_inputs_invalid end
Public Instance Methods
extract_value(hash)
click to toggle source
# File lib/contracted_value/core.rb, line 154 def extract_value(hash) if hash.key?(name) attr_value = hash.fetch(name) unless Contract.valid?(attr_value, contract) raise( Errors::InvalidAttributeValue.new(name, attr_value), ) end return attr_value end # Data missing from input # Use default value if present # Raise error otherwise return default_value if default_value_present? raise( Errors::MissingAttributeInput.new( name, ), ) end
Private Instance Methods
default_value_present?()
click to toggle source
# File lib/contracted_value/core.rb, line 209 def default_value_present? # The default value of default value (ATTR_DEFAULT_VALUE_ABSENT_VAL) # only represents the absence of default value default_value != Private::ATTR_DEFAULT_VALUE_ABSENT_VAL end
raise_error_if_default_value_invalid()
click to toggle source
# File lib/contracted_value/core.rb, line 197 def raise_error_if_default_value_invalid return unless default_value_present? return if Contract.valid?(default_value, contract) raise( Errors::InvalidAttributeDefaultValue.new( name, default_value, ), ) end
raise_error_if_inputs_invalid()
click to toggle source
# File lib/contracted_value/core.rb, line 184 def raise_error_if_inputs_invalid raise_error_if_refrigeration_mode_invalid raise_error_if_default_value_invalid end
raise_error_if_refrigeration_mode_invalid()
click to toggle source
# File lib/contracted_value/core.rb, line 189 def raise_error_if_refrigeration_mode_invalid return if RefrigerationMode::Enum.all.include?(refrigeration_mode) raise Errors::InvalidRefrigerationMode.new( refrigeration_mode, ) end