Class: FastSerializer::SerializedField
- Inherits:
-
Object
- Object
- FastSerializer::SerializedField
- Defined in:
- lib/fast_serializer/serialized_field.rb
Overview
Data structure used internally for maintaining a field to be serialized.
Instance Attribute Summary collapse
-
#condition ⇒ Object
readonly
Returns the value of attribute condition.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
Instance Method Summary collapse
-
#initialize(name, optional: false, serializer: nil, serializer_options: nil, enumerable: false, condition: nil) ⇒ SerializedField
constructor
Create a new serialized field.
-
#optional? ⇒ Boolean
True if the field is optional.
-
#serialize(value, options = nil) ⇒ Object
Wrap a value in the serializer if one has been set.
Constructor Details
#initialize(name, optional: false, serializer: nil, serializer_options: nil, enumerable: false, condition: nil) ⇒ SerializedField
Create a new serialized field.
16 17 18 19 20 21 22 23 24 25 |
# File 'lib/fast_serializer/serialized_field.rb', line 16 def initialize(name, optional: false, serializer: nil, serializer_options: nil, enumerable: false, condition: nil) @name = name.to_sym @optional = !!optional @condition = condition if serializer @serializer = serializer @serializer_options = @enumerable = enumerable end end |
Instance Attribute Details
#condition ⇒ Object (readonly)
Returns the value of attribute condition.
6 7 8 |
# File 'lib/fast_serializer/serialized_field.rb', line 6 def condition @condition end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
6 7 8 |
# File 'lib/fast_serializer/serialized_field.rb', line 6 def name @name end |
Instance Method Details
#optional? ⇒ Boolean
Returns true if the field is optional.
28 29 30 |
# File 'lib/fast_serializer/serialized_field.rb', line 28 def optional? @optional end |
#serialize(value, options = nil) ⇒ Object
Wrap a value in the serializer if one has been set. Otherwise just returns the raw value.
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/fast_serializer/serialized_field.rb', line 37 def serialize(value, = nil) if value && @serializer serializer = nil serializer = if @enumerable ArraySerializer.new(value, serializer: @serializer, serializer_options: ()) else @serializer.new(value, ()) end context = SerializationContext.current if context context.with_reference(value) { serializer.as_json } else serializer.as_json end else serialize_value(value) end end |