Sha256: f00ab69b4e28d22ad88417fb5ec5592030f65d413b1ee2d3122e48f801fdede0

Contents?: true

Size: 850 Bytes

Versions: 7

Compression:

Stored size: 850 Bytes

Contents

require 'xing/serializers/base'
require 'xing/serializers/paged'

module Xing::Serializers
  # Serializes the reference index of a long paginated list. We assume the
  # interface provided by Kaminari: the object to be serialized needs to
  # respond to:
  #
  #   current_page, limit_value, total_pages, total_count, each(and various
  #   Enumerable methods)

  class PagedIndex < Base
    include Paged

    def self.total_called(name)
      attributes name
      alias_method name, :total_items
    end

    attributes :per_page, :total_pages, :total_items

    def total_items
      object.total_count
    end

    def per_page
      object.limit_value
    end

    def self_link
      raise NotImplementedError,
        "subclasses of Xing::Serializers::PagedIndex must override self_link to provide a path URL to themselves"
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
xing-backend-1.0.0.pre.beta lib/xing/serializers/paged_index.rb
xing-backend-0.0.25 lib/xing/serializers/paged_index.rb
xing-backend-0.0.23 lib/xing/serializers/paged_index.rb
xing-backend-0.0.22 lib/xing/serializers/paged_index.rb
xing-backend-0.0.21 lib/xing/serializers/paged_index.rb
xing-backend-0.0.20 lib/xing/serializers/paged_index.rb
xing-backend-0.0.19 lib/xing/serializers/paged_index.rb