Class: Datewari::Helper::PartsBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/datewari/helper/parts_builder.rb

Instance Method Summary collapse

Constructor Details

#initialize(config, paginator) ⇒ PartsBuilder

Returns a new instance of PartsBuilder.



6
7
8
9
10
# File 'lib/datewari/helper/parts_builder.rb', line 6

def initialize(config, paginator)
  @inner = config[:inner_window]
  @outer = config[:outer_window]
  @paginator = paginator
end

Instance Method Details

#buildObject



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/datewari/helper/parts_builder.rb', line 12

def build
  pages = @paginator.pages
  index = @paginator.current_index
  lefts, rights, centers = page_indices(pages, index)

  parts = [:prev]

  if lefts.size > 0 && centers.size > 0 && rights.size > 0 && lefts.last + 1 < centers.first && centers.last < rights.first - 1
    parts += lefts
    parts << :gap
    parts += centers
    parts << :gap
    parts += rights
  elsif centers.size > 0 && rights.size > 0 && centers.last < rights.first - 1
    parts += (lefts + centers).uniq
    parts << :gap
    parts += rights
  elsif lefts.size > 0 && centers.size > 0 && lefts.last + 1 < centers.first
    parts += lefts
    parts << :gap
    parts += (centers + rights).uniq
  else
    parts += (lefts + centers + rights).uniq
  end

  parts << :next

  parts.map { |part| part.is_a?(Integer) ? pages[part] : part }.compact
end