class Transit::Rails::Renderer

Attributes

io[R]

Public Class Methods

new(obj, options={}, io=StringIO.new) click to toggle source
# File lib/transit/rails/renderer.rb, line 10
def initialize(obj, options={}, io=StringIO.new)
  @object = obj
  @format = options[:verbose] ? :json_verbose : :json
  @handlers = TRANSIT_HANDLERS.merge(options[:handlers] || {})
  @io = io
  @symbolize_keys = options[:symbolize_keys]
end

Public Instance Methods

render() click to toggle source
# File lib/transit/rails/renderer.rb, line 23
def render
  return @rendered if defined?(@rendered)
  write
  @io.rewind
  @rendered = @io.read
end
to_s() click to toggle source
# File lib/transit/rails/renderer.rb, line 30
def to_s
  render
end
Also aliased as: to_str
to_str()
Alias for: to_s
write() click to toggle source
# File lib/transit/rails/renderer.rb, line 18
def write
  serialized = serialize_for_transit(@object)
  Transit::Writer.new(@format, @io, handlers: @handlers).write(serialized)
end

Private Instance Methods

serialize_for_transit(obj) click to toggle source
# File lib/transit/rails/renderer.rb, line 36
def serialize_for_transit(obj)
  return obj if String === obj
  if obj.respond_to?(:as_transit)
    obj.as_transit
  elsif obj.respond_to?(:serializable_hash)
    if @symbolize_keys
      obj.serializable_hash.symbolize_keys
    else
      obj.serializable_hash
    end
  elsif obj.respond_to?(:to_ary)
    obj.to_ary.map {|o| serialize_for_transit(o)}
  else
    obj
  end
end