Sha256: 03ea5e9f7377959e7bbe7f8cfa7f5498e98321fae598b0a39d8495f21021974e

Contents?: true

Size: 1.41 KB

Versions: 3

Compression:

Stored size: 1.41 KB

Contents

#*************************************************************************************
# Builder will help build a string of html output.
#*************************************************************************************
class NeatPages::Helpers::Builder
  attr_reader :pagination

  delegate :per_page,     to: :pagination
  delegate :total_items,  to: :pagination

  def initialize(pagination, request)
    @pagination = pagination
    @base_url = generate_base_url_from_request(request)
    @params = request.env['action_dispatch.request.query_parameters']
    @params.delete('utf8')

    reset_builder
  end

  def b(str='')
    @builder << str

    @builder.html_safe
  end

  def li(content, css_class='', options={})
    options = { hidden: false }.merge(options)

    attributes = ' class="' + css_class + '"' if not css_class.empty?
    attributes << ' style="display:none"' if options[:hidden]

    b "<li#{attributes}>#{content}</li>"
  end

  def path_to(page)
    qs = @params.map { |k,v| "#{k}=#{v}" if k != 'page' }.compact.join('&')

    "#{@base_url}?#{qs}" + (qs.empty? ? '' : '&') + "page=#{page}"
  end

  def reset_builder
    @builder = ''
  end

  def t(text_path)
    (defined? I18n) ? I18n.t("neat_pages.#{text_path}") : text_path
  end

  private

  def generate_base_url_from_request(request)
    "#{request.protocol}#{request.host}#{request.port == 80 ? '' : ':' + request.port.to_s}#{request.path_info}"
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
neat-pages-1.0.2 lib/neat_pages/helpers/builder.rb
neat-pages-1.0.1 lib/neat_pages/helpers/builder.rb
neat-pages-1.0.0 lib/neat_pages/helpers/builder.rb