class PragmaticSerializer::CollectionSerializer

Constants

OverMaximumLimit

Attributes

include_resources_json[W]
limit[W]
offset[W]
pagination_evaluator[RW]
resource_serializer[RW]
resource_serializer_wrapper[W]
resources[RW]
serialization_method[W]
total[RW]

Public Instance Methods

as_json() click to toggle source
# File lib/pragmatic_serializer/collection_serializer.rb, line 57
def as_json
  hash = {}
  hash.merge!({ collection_prefix => as_unprefixed_json }) if include_resources_json
  hash.merge!(pagination_json.as_json) if pagination_evaluator
  hash
end
as_unprefixed_json() click to toggle source
# File lib/pragmatic_serializer/collection_serializer.rb, line 64
def as_unprefixed_json
  collection_serializers
    .map do |rs|
      resource_serializer_wrapper.call do
        rs.send(serialization_method)
      end
    end
    .compact
end
include_resources_json() click to toggle source
# File lib/pragmatic_serializer/collection_serializer.rb, line 52
def include_resources_json
  return @include_resources_json unless @include_resources_json.nil?
  @include_resources_json ||= true
end
limit() click to toggle source
# File lib/pragmatic_serializer/collection_serializer.rb, line 42
def limit
  @limit ||= config.default_limit
  raise OverMaximumLimit if @limit > config.max_limit
  @limit
end
offset() click to toggle source
# File lib/pragmatic_serializer/collection_serializer.rb, line 48
def offset
  @offset ||= config.default_offset
end
resource_options() click to toggle source
# File lib/pragmatic_serializer/collection_serializer.rb, line 28
def resource_options
  @resource_options ||= ResourceOptions.new
end
resource_options=(**options) click to toggle source
# File lib/pragmatic_serializer/collection_serializer.rb, line 32
def resource_options=(**options)
  options.each_pair do |method_name, value|
    resource_options.send(method_name, value)
  end
end
resource_serializer_wrapper() click to toggle source
# File lib/pragmatic_serializer/collection_serializer.rb, line 74
def resource_serializer_wrapper
  @resource_serializer_wrapper ||= PragmaticSerializer::ResourceSerializerWrapper
end
serialization_method() click to toggle source
# File lib/pragmatic_serializer/collection_serializer.rb, line 38
def serialization_method
  @serialization_method ||= config.default_resource_serialization_method
end

Private Instance Methods

collection_serializers() click to toggle source
# File lib/pragmatic_serializer/collection_serializer.rb, line 81
def collection_serializers
  resources.map do |resource|
    resource_object = resource_serializer.new(resource)
    resource_options._call_each_reg_method_pair(resource_object)
    resource_object
  end
end
pagination_json() click to toggle source
# File lib/pragmatic_serializer/collection_serializer.rb, line 89
def pagination_json
  @pagination_json ||= PragmaticSerializer::PaginationJSON.new({
    limit: limit,
    offset: offset,
    total: total,
    pagination_evaluator: pagination_evaluator
  })
end