Class: ContractedValue::Attribute
- Inherits:
-
Object
- Object
- ContractedValue::Attribute
- Defined in:
- lib/contracted_value/core.rb
Instance Attribute Summary collapse
-
#contract ⇒ Object
readonly
Returns the value of attribute contract.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#refrigeration_mode ⇒ Object
readonly
Returns the value of attribute refrigeration_mode.
Class Method Summary collapse
Instance Method Summary collapse
- #extract_value(hash) ⇒ Object
-
#initialize(name:, contract:, refrigeration_mode:, default_value:) ⇒ Attribute
constructor
A new instance of Attribute.
Constructor Details
#initialize(name:, contract:, refrigeration_mode:, default_value:) ⇒ Attribute
Returns a new instance of Attribute.
138 139 140 141 142 143 144 145 146 147 148 |
# 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 |
Instance Attribute Details
#contract ⇒ Object (readonly)
Returns the value of attribute contract.
151 152 153 |
# File 'lib/contracted_value/core.rb', line 151 def contract @contract end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
150 151 152 |
# File 'lib/contracted_value/core.rb', line 150 def name @name end |
#refrigeration_mode ⇒ Object (readonly)
Returns the value of attribute refrigeration_mode.
152 153 154 |
# File 'lib/contracted_value/core.rb', line 152 def refrigeration_mode @refrigeration_mode end |
Class Method Details
.new ⇒ Object
134 135 136 |
# File 'lib/contracted_value/core.rb', line 134 def self.new(...) ::IceNine.deep_freeze(super) end |
Instance Method Details
#extract_value(hash) ⇒ Object
154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 |
# 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 |