Class: MenuMaker::MenuRenderer

Inherits:
Object
  • Object
show all
Defined in:
lib/menu_maker/menu_renderer.rb

Direct Known Subclasses

CustomMenuRenderer, CustomSubmenuRenderer

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(helpers, path = nil) ⇒ MenuRenderer



16
17
18
19
# File 'lib/menu_maker/menu_renderer.rb', line 16

def initialize(helpers, path = nil)
  @helpers      = helpers
  @current_path = find_current_path(path)
end

Instance Attribute Details

#current_pathObject (readonly)

Returns the value of attribute current_path.



4
5
6
# File 'lib/menu_maker/menu_renderer.rb', line 4

def current_path
  @current_path
end

#helpersObject (readonly) Also known as: h

Returns the value of attribute helpers.



4
5
6
# File 'lib/menu_maker/menu_renderer.rb', line 4

def helpers
  @helpers
end

Returns the value of attribute menu.



3
4
5
# File 'lib/menu_maker/menu_renderer.rb', line 3

def menu
  @menu
end

Class Method Details

.render(&block) ⇒ Object



8
9
10
11
12
13
14
# File 'lib/menu_maker/menu_renderer.rb', line 8

def self.render(&block)
  define_method :render do
    build_html do
      instance_eval(&block)
    end
  end
end

Instance Method Details

#build_htmlObject



29
30
31
32
33
34
35
36
37
# File 'lib/menu_maker/menu_renderer.rb', line 29

def build_html
  output = yield ''

  if output.respond_to? :html_safe
    output.html_safe
  else
    output
  end
end

#build_menuObject



21
22
23
24
25
26
27
# File 'lib/menu_maker/menu_renderer.rb', line 21

def build_menu
  build_html do
    menu.items.inject('') do |out, item|
      out + yield(item, [])
    end
  end
end

#call(menu) ⇒ Object



39
40
41
42
# File 'lib/menu_maker/menu_renderer.rb', line 39

def call(menu)
  self.menu = menu
  render
end