Module: Castkit::AttributeExtensions::Serialization
- Included in:
- Castkit::Attribute
- Defined in:
- lib/castkit/attribute_extensions/serialization.rb
Overview
Handles serialization (‘dump`) and deserialization (`load`) of attribute values.
Supports primitive types, arrays, and nested Castkit::DataObject instances.
Instance Method Summary collapse
-
#dump(value, visited: nil) ⇒ Object
Serializes a value into a format suitable for output (e.g., JSON or Hash).
-
#load(value, context:) ⇒ Object
Deserializes and validates a value during object instantiation.
Instance Method Details
#dump(value, visited: nil) ⇒ Object
Serializes a value into a format suitable for output (e.g., JSON or Hash).
If the value is a Castkit::DataObject, a custom serializer is used if configured.
16 17 18 19 20 21 22 23 24 |
# File 'lib/castkit/attribute_extensions/serialization.rb', line 16 def dump(value, visited: nil) return value if value.nil? if type == :array Array(value).map { |val| dump_element(val, visited: visited) } else dump_element(value, visited: visited) end end |
#load(value, context:) ⇒ Object
Deserializes and validates a value during object instantiation.
Applies default value, casts, and runs validators.
34 35 36 37 38 39 40 41 42 |
# File 'lib/castkit/attribute_extensions/serialization.rb', line 34 def load(value, context:) value = default if value.nil? return raise_error!("#{field} is required for instantiation") if value.nil? && required? value = cast(value) validate_value!(value, context: context) value end |