Class: JSONAPI::Serializable::ResourceBuilder

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

Constant Summary collapse

DEFAULT_RESOURCE_INFERER =
lambda do |object_klass_name|
  names = object_klass_name.split('::'.freeze)
  klass_name = names.pop
  namespace = names.join('::'.freeze)

  klass_name = [namespace, "Serializable#{klass_name}"]
               .reject(&:nil?)
               .reject(&:empty?)
               .join('::'.freeze)

  Object.const_get(klass_name)
end

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(object, expose, klass) ⇒ ResourceBuilder

Returns a new instance of ResourceBuilder.



30
31
32
33
34
35
36
# File 'lib/jsonapi/serializable/resource_builder.rb', line 30

def initialize(object, expose, klass)
  @object   = object
  @expose   = expose || {}
  @klass    = klass
  @resource = serializable_class.new(serializable_params)
  freeze
end

Instance Attribute Details

#resourceObject (readonly)

Returns the value of attribute resource.



28
29
30
# File 'lib/jsonapi/serializable/resource_builder.rb', line 28

def resource
  @resource
end

Class Method Details

.build(objects, expose, klass) ⇒ Object



17
18
19
20
21
22
23
24
25
26
# File 'lib/jsonapi/serializable/resource_builder.rb', line 17

def self.build(objects, expose, klass)
  return objects if objects.nil? ||
                    Array(objects).first.respond_to?(:as_jsonapi)

  if objects.respond_to?(:each)
    objects.map { |obj| new(obj, expose, klass).resource }
  else
    new(objects, expose, klass).resource
  end
end