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.
152 153 154 155 156 157 158 159 160 161 162 |
# File 'lib/contracted_value/core.rb', line 152 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.
165 166 167 |
# File 'lib/contracted_value/core.rb', line 165 def contract @contract end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
164 165 166 |
# File 'lib/contracted_value/core.rb', line 164 def name @name end |
#refrigeration_mode ⇒ Object (readonly)
Returns the value of attribute refrigeration_mode.
166 167 168 |
# File 'lib/contracted_value/core.rb', line 166 def refrigeration_mode @refrigeration_mode end |
Class Method Details
.new ⇒ Object
148 149 150 |
# File 'lib/contracted_value/core.rb', line 148 def self.new(...) ::IceNine.deep_freeze(super) end |
Instance Method Details
#extract_value(hash) ⇒ Object
168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 |
# File 'lib/contracted_value/core.rb', line 168 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 |