Module: Pagy::OutOfRange

Included in:
Pagy
Defined in:
lib/pagy/extras/out_of_range.rb

Instance Method Summary collapse

Instance Method Details

#initialize(vars) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/pagy/extras/out_of_range.rb', line 12

def initialize(vars)
  super
rescue OutOfRangeError
  @out_of_range = true                        # add the out_of_range flag
  case @vars[:out_of_range_mode]
  when :exception
    raise                                     # same as without the extra
  when :last_page
    initial_page = @vars[:page]               # save the very initial page (even after re-run)
    super(vars.merge!(page: @last))           # re-run with the last page
    @vars[:page] = initial_page               # restore the inital page
  when :empty_page
    @offset = @items = @from = @to = 0        # vars relative to the actual page
    @prev = @last                             # prev relative to the actual page
    extend(Series)                            # special series for :empty_page
  else
    raise ArgumentError, "expected :out_of_range_mode variable in [:last_page, :empty_page, :exception]; got #{@vars[:out_of_range_mode].inspect}"
  end
end