class Pagy

def series(size: @vars[:size], **_)

Return the array of page numbers and :gap e.g. [1, :gap, 8, "9", 10, :gap, 36]
def series(size: @vars[:size], **_)
  raise VariableError.new(self, :size, 'to be an Integer >= 0', size) \
  unless size.is_a?(Integer) && size >= 0
  return [] if size.zero?
  [].tap do |series|
    if size >= @last
      series.push(*1..@last)
    else
      left  = ((size - 1) / 2.0).floor             # left half might be 1 page shorter for even size
      start = if @page <= left                     # beginning pages
                1
              elsif @page > (@last - size + left)  # end pages
                @last - size + 1
              else                                 # intermediate pages
                @page - left
              end
      series.push(*start...start + size)
      # Set first and last pages plus gaps when needed, respecting the size
      if vars[:ends] && size >= 7
        series[0]  = 1
        series[1]  = :gap  unless series[1]  == 2
        series[-2] = :gap  unless series[-2] == @last - 1
        series[-1] = @last
      end
    end
    series[series.index(@page)] = @page.to_s
  end
end