class Ser::Ializer::Field

Attributes

block[R]
deser[R]
if_condition[R]
key[R]
model_class[R]
name[R]
setter[R]

Public Class Methods

new(name, options, config, &block) click to toggle source
# File lib/ser/ializer/field.rb, line 16
def initialize(name, options, config, &block)
  @name = name
  @setter = options[:setter] || "#{name}="
  @key = options[:key] || Field.transform(name.to_s, config.key_transformer)
  @deser = options[:deser]
  @if_condition = options[:if]
  @model_class = options[:model_class]
  @block = block
end
transform(key, key_transformer) click to toggle source
# File lib/ser/ializer/field.rb, line 7
def transform(key, key_transformer)
  return key unless key_transformer

  key_transformer.call(key)
end

Public Instance Methods

get_value(object, context) click to toggle source
# File lib/ser/ializer/field.rb, line 26
def get_value(object, context)
  return object.public_send(name) unless block

  block.call(object, context)
end
parse(value) click to toggle source
# File lib/ser/ializer/field.rb, line 36
def parse(value)
  if model_class
    deser.parse(value, model_class)
  else
    deser.parse(value)
  end
end
serialize(value, context) click to toggle source
# File lib/ser/ializer/field.rb, line 32
def serialize(value, context)
  deser.serialize(value, context)
end
valid_for_context?(object, context) click to toggle source
# File lib/ser/ializer/field.rb, line 44
def valid_for_context?(object, context)
  return true if if_condition.nil?

  if_condition.call(object, context)
end