Sha256: 5ee6f0456b6c76e99d154d66206d85c9869ffc63a6ea975c99423cab3b0c0e25
Contents?: true
Size: 1.34 KB
Versions: 1
Compression:
Stored size: 1.34 KB
Contents
require 'xing/serializers/base' module Xing::Serializers class PagedList < Base def initialize(list, page_num, total_pages, options = {}) @page_num = page_num.to_i @total_pages = total_pages super(list, options) end attr_reader :page_num, :total_pages def item_serializer_class raise NotImplemented, "subclasses of Xing::Serializers::PagesData must override item_serializer_class to refer to the per-item serializer" end def item_serializer_options {} end def page_link(options) raise NotImplemented, "subclasses of Xing::Serializers::PagesData must override page_link to return the URL of a page based on a :page => Integer() hash" end def self_link raise NotImplemented, "subclasses of Xing::Serializers::PagesData must override self_link to return their own path" end def as_json_without_wrap(options={}) object.map do |item| item_serializer_class.new(item, item_serializer_options).as_json end 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 { :self => self_link, :next => next_link, :previous => previous_link } end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
xing-backend-0.0.12 | lib/xing/serializers/paged_list.rb |