Class: PageUp::Fragment

Inherits:
Object
  • Object
show all
Defined in:
lib/page_up/fragment.rb

Constant Summary collapse

NullResult =
'NullResult'

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(fragment, page, per_page, total = nil) ⇒ Fragment

Returns a new instance of Fragment.



5
6
7
8
9
10
# File 'lib/page_up/fragment.rb', line 5

def initialize fragment, page, per_page, total = nil
  @page     = page
  @per_page = per_page
  @size     = total || (fragment.size + offset)
  @fragment = [].fill(NullResult, 0, offset) + fragment
end

Instance Attribute Details

#sizeObject (readonly)

Returns the value of attribute size.



11
12
13
# File 'lib/page_up/fragment.rb', line 11

def size
  @size
end

Instance Method Details

#[](range) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
# File 'lib/page_up/fragment.rb', line 13

def [] range
  until covers? range
    next_page = page_for(range)
    result = @callback.call next_page, @per_page
    @per_page.times do |index|
      value = result[index]
      @fragment[index + offset(next_page)] = value
    end
  end
  @fragment[range].compact
end

#to_aObject



25
26
27
# File 'lib/page_up/fragment.rb', line 25

def to_a
  self[0..@size].to_a
end

#use(&block) ⇒ Object



29
30
31
# File 'lib/page_up/fragment.rb', line 29

def use &block
  @callback = block
end