Class: Ludy::Page

Inherits:
Object
  • Object
show all
Defined in:
lib/ludy/paginator.rb

Overview

which was produced by Paginator#page / Paginator#[], representing page that contained target data. it would use lazy fetching, whenever you need the data, the fetcher would be invoked that time. whenever the data was fetched, it won’t fetch again. it you need refetch, call Page#fetch

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(pager, page) ⇒ Page

don’t create a page instance yourself unless you have to



15
# File 'lib/ludy/paginator.rb', line 15

def initialize pager, page; @pager, @page = pager, page; end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(msg, *args, &block) ⇒ Object

any other method call would delegate to the data, e.g., each, to_a, map, first, method_you_defined, etc.



36
37
38
# File 'lib/ludy/paginator.rb', line 36

def method_missing msg, *args, &block
  self.data.public_send msg, *args, &block
end

Instance Attribute Details

#pageObject (readonly)

Returns the value of attribute page.



13
14
15
# File 'lib/ludy/paginator.rb', line 13

def page
  @page
end

#pagerObject (readonly)

Returns the value of attribute pager.



13
14
15
# File 'lib/ludy/paginator.rb', line 13

def pager
  @pager
end

Instance Method Details

#==(rhs) ⇒ Object

if the page numbers and the pagers are equal, then the pages are equal.



22
23
24
25
# File 'lib/ludy/paginator.rb', line 22

def == rhs
  @page  == rhs.instance_variable_get('@page' ) and
  @pager == rhs.instance_variable_get('@pager')
end

#beginObject

the real beginning index



31
# File 'lib/ludy/paginator.rb', line 31

def begin; @pager.offset @page; end

#dataObject

get the data fetched from pager



29
# File 'lib/ludy/paginator.rb', line 29

def data; @data ||= fetch; end

#endObject

the real ending index (need fetch, because we don’t know the size)



33
# File 'lib/ludy/paginator.rb', line 33

def end; self.begin + self.size - 1; end

#fetchObject

explicitly fetch the data from pager



27
# File 'lib/ludy/paginator.rb', line 27

def fetch; @data = @pager.fetcher[self.begin, @pager.per_page]; end

#nextObject

return the page instance next to this page



17
# File 'lib/ludy/paginator.rb', line 17

def next; @pager.page(@page+1); end

#prevObject

return the page instance prev to this page



19
# File 'lib/ludy/paginator.rb', line 19

def prev; @pager.page(@page-1); end