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