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
# 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
    result.each_with_index do |value, index|
      @fragment[index + offset(next_page)] = value
    end
  end
  @fragment[range]
end

#use(&block) ⇒ Object



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

def use &block
  @callback = block
end