class HtmlSlicer::Helpers::Slicer

Public Instance Methods

each_relevant_slice() { |slice_proxy(merge, i, last)| ... } click to toggle source

enumerate each slice providing sliceProxy object as the block parameter Because of performance reason, this doesn't actually enumerate all slices but slices that are seemingly relevant to the paginator. “Relevant” slices are:

  • slices inside the left outer window plus one for showing the gap tag

  • slices inside the inner window plus one on the left plus one on the right for showing the gap tags

  • slices inside the right outer window plus one for showing the gap tag

# File lib/html_slicer/helpers/slicer.rb, line 54
def each_relevant_slice
  return to_enum(:each_relevant_slice) unless block_given?

  relevant_slices(@window_options.merge(@options)).each do |i|
    yield SliceProxy.new(@window_options.merge(@options), i, @last)
  end
end
Also aliased as: each_slice
each_slice()
Alias for: each_relevant_slice
render(&block) click to toggle source

render given block as a view template

# File lib/html_slicer/helpers/slicer.rb, line 43
def render(&block)
  instance_eval &block if @options[:slice_number] > 1
  @output_buffer
end
slice_tag(slice) click to toggle source
# File lib/html_slicer/helpers/slicer.rb, line 72
def slice_tag(slice)
  @last = Slice.new @template, @options.merge(:slice => slice)
end

Private Instance Methods

relevant_slices(options) click to toggle source
# File lib/html_slicer/helpers/slicer.rb, line 63
def relevant_slices(options)
  left_window_plus_one = 1.upto(options[:left] + 1).to_a
  right_window_plus_one = (options[:slice_number] - options[:right]).upto(options[:slice_number]).to_a
  inside_window_plus_each_sides = (options[:current_slice] - options[:window] - 1).upto(options[:current_slice] + options[:window] + 1).to_a

  (left_window_plus_one + inside_window_plus_each_sides + right_window_plus_one).uniq.sort.reject {|x| (x < 1) || (x > options[:slice_number])}
end