Sha256: 49e33f77b7ef1bb3af72b20fd8f2e625bfe0c861fd44556215b0c7d1b47284e4

Contents?: true

Size: 849 Bytes

Versions: 5

Compression:

Stored size: 849 Bytes

Contents

require 'xing/serializers/list'
require 'xing/serializers/paged'

module Xing::Serializers

  # Serializes a single page 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 PagedList < List
    include Paged

    def page_num
      object.current_page
    end

    def self_link
        page_link(page: page_num)
    end

    def next_link
      page_link({page: page_num + 1}) unless page_num == total_pages
    end

    def previous_link
      page_link({page: page_num - 1}) unless page_num == 1
    end

    def links
      super.merge(
                  :next => next_link,
                  :previous => previous_link
                 )
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

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