Class: MenuBuilder::ViewHelpers::Menu
- Inherits:
-
Object
- Object
- MenuBuilder::ViewHelpers::Menu
show all
- Defined in:
- lib/menu_builder/helper.rb
Instance Method Summary
collapse
Constructor Details
#initialize(context, current_class = "current", &block) ⇒ Menu
Returns a new instance of Menu.
27
28
29
30
31
32
33
|
# File 'lib/menu_builder/helper.rb', line 27
def initialize(context, current_class="current", &block)
@context = context
@current_class = current_class || "current"
= context.instance_variable_get('@menu_items')
@actual_items = []
@block = block
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(item, *args, &block) ⇒ Object
35
36
37
38
|
# File 'lib/menu_builder/helper.rb', line 35
def method_missing item, *args, &block
@actual_items << .new(item, args, block)
nil
end
|
Instance Method Details
#first?(item) ⇒ Boolean
68
69
70
|
# File 'lib/menu_builder/helper.rb', line 68
def first? item
@actual_items.first == item
end
|
#html_options_for(item) ⇒ Object
49
50
51
52
53
54
55
56
57
58
|
# File 'lib/menu_builder/helper.rb', line 49
def html_options_for item
css_classes = []
css_classes << "#{@current_class}" if included_in_current_items? item
css_classes << "first" if first? item
css_classes << "last" if last? item
options = {}
options[:class] = css_classes.join(" ") if css_classes.any?
options
end
|
#included_in_current_items?(item) ⇒ Boolean
60
61
62
|
# File 'lib/menu_builder/helper.rb', line 60
def included_in_current_items?(item)
.present? && .include?(item.to_sym)
end
|
#last?(item) ⇒ Boolean
64
65
66
|
# File 'lib/menu_builder/helper.rb', line 64
def last? item
@actual_items.last == item
end
|
#render ⇒ Object
40
41
42
43
|
# File 'lib/menu_builder/helper.rb', line 40
def render
@block.call(self)
@actual_items.map { |item| render_one item }.join.html_safe
end
|
#render_one(item) ⇒ Object
45
46
47
|
# File 'lib/menu_builder/helper.rb', line 45
def render_one item
@context.content_tag :li, item.link_to_in_context(@context), html_options_for(item)
end
|