Class: FastSerializer::SerializedField

Inherits:
Object
  • Object
show all
Defined in:
lib/fast_serializer/serialized_field.rb

Overview

Data structure used internally for maintaining a field to be serialized.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, optional: false, serializer: nil, serializer_options: nil, enumerable: false) ⇒ SerializedField

Returns a new instance of SerializedField.



6
7
8
9
10
11
12
13
14
# File 'lib/fast_serializer/serialized_field.rb', line 6

def initialize(name, optional: false, serializer: nil, serializer_options: nil, enumerable: false)
  @name = name
  @optional = !!optional
  if serializer
    @serializer = serializer
    @serializer_options = serializer_options
    @enumerable = enumerable
  end
end

Instance Attribute Details

#nameObject (readonly)

Returns the value of attribute name.



4
5
6
# File 'lib/fast_serializer/serialized_field.rb', line 4

def name
  @name
end

Instance Method Details

#optional?Boolean

Returns:

  • (Boolean)


16
17
18
# File 'lib/fast_serializer/serialized_field.rb', line 16

def optional?
  @optional
end

#serialize(value) ⇒ Object

Wrap a value in the serializer if one has been set. Otherwise just returns the raw value.



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/fast_serializer/serialized_field.rb', line 21

def serialize(value)
  if value && @serializer
    serializer = nil
    if @enumerable
      serializer = ArraySerializer.new(value, :serializer => @serializer, :serializer_options => @serializer_options)
    else
      serializer = @serializer.new(value, @serializer_options)
    end
    context = SerializationContext.current
    if context
      context.with_reference(value){ serializer.as_json }
    else
      serializer.as_json
    end
  else
    serialize_value(value)
  end
end