Class: JSONAPI::Serializable::Renderer

Inherits:
Object
  • Object
show all
Defined in:
lib/jsonapi/serializable/renderer.rb

Instance Method Summary collapse

Constructor Details

#initialize(renderer = JSONAPI::Renderer.new) ⇒ Renderer

Returns a new instance of Renderer.



6
7
8
# File 'lib/jsonapi/serializable/renderer.rb', line 6

def initialize(renderer = JSONAPI::Renderer.new)
  @renderer = renderer
end

Instance Method Details

#render(resources, options = {}) ⇒ Hash

Serialize resources into a JSON API document.

Examples:

renderer.render(nil)
# => { data: nil }
renderer.render(user, class: { User: SerializableUser })
# => {
       data: {
         type: 'users',
         id: 'foo',
         attributes: { ... },
         relationships: { ... }
       }
     }
renderer.render([user1, user2], class: { User: SerializableUser })
# => { data: [{ type: 'users', id: 'foo', ... }, ...] }

Parameters:

  • resources (nil, Object, Array)
  • options (Hash) (defaults to: {})

    @see JSONAPI.render

  • class (Hash)

    a customizable set of options

  • expose (Hash)

    a customizable set of options

Returns:

  • (Hash)


38
39
40
41
42
43
44
45
46
47
# File 'lib/jsonapi/serializable/renderer.rb', line 38

def render(resources, options = {})
  options   = options.dup
  klass     = options.delete(:class) || {}
  exposures = options.delete(:expose) || {}
  exposures = exposures.merge(_class: klass)

  resources = build_resources(resources, exposures, klass)

  @renderer.render(options.merge(data: resources))
end

#render_errors(errors, options = {}) ⇒ Hash

Serialize errors into a JSON API document.

Examples:

error = JSONAPI::Serializable::Error.create(id: 'foo', title: 'bar')
renderer.render([error])
# => { errors: [{ id: 'foo', title: 'bar' }] }

Parameters:

  • errors (Array)
  • options (Hash) (defaults to: {})

    @see JSONAPI.render

  • class (Hash)

    a customizable set of options

  • expose (Hash)

    a customizable set of options

Returns:

  • (Hash)


63
64
65
66
67
68
69
70
71
# File 'lib/jsonapi/serializable/renderer.rb', line 63

def render_errors(errors, options = {})
  options   = options.dup
  klass     = options.delete(:class) || {}
  exposures = options.delete(:expose) || {}

  errors = errors.map { |e| _build(e, exposures, klass) }

  @renderer.render(options.merge(errors: errors))
end