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.

Parameters:

  • value (Object)

    the value to serialize

  • visited (Set, nil) (defaults to: nil)

    used for circular reference detection

Returns:

  • (Object)

    the serialized value



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.

Parameters:

  • value (Object)

    the input value

  • context (Symbol)

    the attribute name or context key

Returns:

  • (Object)

    the deserialized and validated value

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