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

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.

Raises:



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