Class: Strict::Attribute
- Inherits:
-
Declaration
- Object
- Declaration
- Strict::Attribute
- Defined in:
- lib/strict/attribute.rb
Constant Summary
Constants inherited from Declaration
Instance Attribute Summary collapse
-
#instance_variable ⇒ Object
readonly
Returns the value of attribute instance_variable.
Attributes inherited from Declaration
#coercer, #default_generator, #name, #validator
Class Method Summary collapse
Instance Method Summary collapse
- #coerce(value, for_class:) ⇒ Object
-
#initialize(name:, validator:, default_generator:, coercer:) ⇒ Attribute
constructor
A new instance of Attribute.
Methods inherited from Declaration
make, #optional?, #valid?, #violations
Constructor Details
#initialize(name:, validator:, default_generator:, coercer:) ⇒ Attribute
Returns a new instance of Attribute.
19 20 21 22 |
# File 'lib/strict/attribute.rb', line 19 def initialize(name:, validator:, default_generator:, coercer:) super @instance_variable = self.class.instance_variable_for(self.name) end |
Instance Attribute Details
#instance_variable ⇒ Object (readonly)
Returns the value of attribute instance_variable.
17 18 19 |
# File 'lib/strict/attribute.rb', line 17 def instance_variable @instance_variable end |
Class Method Details
.instance_variable_for(name) ⇒ Object
6 7 8 |
# File 'lib/strict/attribute.rb', line 6 def instance_variable_for(name) "@#{name.to_s.delete_suffix('?').delete_suffix('!')}" end |
Instance Method Details
#coerce(value, for_class:) ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/strict/attribute.rb', line 24 def coerce(value, for_class:) return value unless coercer case coercer when Symbol for_class.public_send(coercer, value) when true for_class.public_send("coerce_#{name}", value) else coercer.call(value) end end |