Class: Integral::ListRenderer

Inherits:
Object
  • Object
show all
Includes:
ActionView::Context, ActionView::Helpers::AssetTagHelper, ActionView::Helpers::TagHelper, ActionView::Helpers::TextHelper
Defined in:
lib/integral/list_renderer.rb

Overview

Handles safely rendering lists

Direct Known Subclasses

SwiperListRenderer

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(list, opts = {}) ⇒ ListRenderer

Returns a new instance of ListRenderer.

Parameters:

  • list (List)

    object to render

  • opts (Hash) (defaults to: {})

    options hash



21
22
23
24
25
26
27
28
29
# File 'lib/integral/list_renderer.rb', line 21

def initialize(list, opts = {})
  @opts = opts.reverse_merge(
    item_renderer: ListItemRenderer,
    item_renderer_opts: {},
    wrapper_element: 'ul'
  )

  @list = list
end

Instance Attribute Details

#listObject

Returns the value of attribute list.



9
10
11
# File 'lib/integral/list_renderer.rb', line 9

def list
  @list
end

#optsObject

Returns the value of attribute opts.



9
10
11
# File 'lib/integral/list_renderer.rb', line 9

def opts
  @opts
end

Class Method Details

.render(list, opts = {}) ⇒ String

Renders the provided list with options given

Returns:

  • (String)

    the rendered list



14
15
16
17
# File 'lib/integral/list_renderer.rb', line 14

def self.render(list, opts = {})
  renderer = new(list, opts)
  renderer.render_safely.html_safe
end

Instance Method Details

#renderString

Renders the provided list

Returns:

  • (String)

    the rendered list item



42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/integral/list_renderer.rb', line 42

def render
  rendered_items = ''

  list.list_items.each do |list_item|
    rendered_items += render_item(list_item)
  end

  if opts[:wrapper_element]
     opts[:wrapper_element], rendered_items, html_options, false
  else
    rendered_items
  end
end

#render_safelyObject

Performs checks before rendering to see if provided list exists and contains list items



32
33
34
35
36
37
# File 'lib/integral/list_renderer.rb', line 32

def render_safely
  return render_no_list_warning if list.nil?
  return render_no_items_warning if list.list_items.empty?

  render
end