class Oat::Serializer

Attributes

adapter[R]
adapter_class[R]
context[R]
item[R]

Public Class Methods

adapter(adapter_class = nil) click to toggle source
# File lib/oat/serializer.rb, line 23
def self.adapter(adapter_class = nil)
  self._adapter = adapter_class if adapter_class
  self._adapter
end
new(item, context = {}, _adapter_class = nil, parent_serializer = nil) click to toggle source
# File lib/oat/serializer.rb, line 34
def initialize(item, context = {}, _adapter_class = nil, parent_serializer = nil)
  @item, @context = item, context
  @parent_serializer = parent_serializer
  @adapter_class = _adapter_class || self.class.adapter
  @adapter = @adapter_class.new(self)
end
schema(&block) click to toggle source
# File lib/oat/serializer.rb, line 11
def self.schema(&block)
  if block_given?
    schema_method_name = :"schema_block_#{self.schema_methods.count}"

    self.schemas += [block]
    self.schema_methods += [schema_method_name]

    define_method(schema_method_name, &block)
    private(schema_method_name)
  end
end
warn(msg) click to toggle source
# File lib/oat/serializer.rb, line 28
def self.warn(msg)
  logger ? logger.warning(msg) : Kernel.warn(msg)
end

Public Instance Methods

map_properties(*args) click to toggle source
# File lib/oat/serializer.rb, line 81
def map_properties(*args)
  args.each { |name| map_property name }
end
map_property(name) click to toggle source
# File lib/oat/serializer.rb, line 85
def map_property(name)
  value = item.send(name)
  property name, value
end
method_missing(name, *args, &block) click to toggle source
Calls superclass method
# File lib/oat/serializer.rb, line 45
    def method_missing(name, *args, &block)
      if adapter.respond_to?(name)
        self.class.class_eval <<-RUBY, __FILE__, __LINE__ + 1
          private

          def #{name}(*args, &block)
            adapter.#{name}(*args, &block)
          end
        RUBY

        send(name, *args, &block)
      else
        super
      end
    end
respond_to_missing?(method_name, include_private = false) click to toggle source
# File lib/oat/serializer.rb, line 67
def respond_to_missing?(method_name, include_private = false)
  adapter.respond_to? method_name
end
to_hash() click to toggle source
# File lib/oat/serializer.rb, line 71
def to_hash
  @to_hash ||= (
    self.class.schema_methods.each do |schema_method_name|
      send(schema_method_name)
    end

    adapter.to_hash
  )
end
top() click to toggle source
# File lib/oat/serializer.rb, line 41
def top
  @top ||= @parent_serializer || self
end
type(*args) click to toggle source
# File lib/oat/serializer.rb, line 61
def type(*args)
  if adapter.respond_to?(:type) && adapter.method(:type).arity != 0
    adapter.type(*args)
  end
end