class PartialMenu::Menu
Represents a menu with menu items
Attributes
id[R]
items[R]
layout[R]
parent[R]
Public Class Methods
new(props, layout = 'main', parent = nil)
click to toggle source
rubocop:disable Metrics/MethodLength
# File lib/partial_menu/menu.rb, line 12 def initialize(props, layout = 'main', parent = nil) unless props.is_a? Array raise ::ArgumentError, "Expected an Array, got #{props.class}" end unless layout.is_a? String raise ::ArgumentError, "Expected a String, got #{layout.class}" end unless parent.nil? || (parent.is_a? PartialMenu::MenuItem) raise ::ArgumentError, "Expected MenuItem or nil, got #{parent.class}" end @props = props @layout = layout @items = [] @parent = parent set_id add_items(props) end
Public Instance Methods
active?(view)
click to toggle source
True if current url relates to any child menu item's uri
@params [ActionView] Needs view context to get current request details
@retrun [boolean]
# File lib/partial_menu/menu.rb, line 38 def active?(view) @items.each do |item| return true if item.active?(view) end false end
Private Instance Methods
add_items(items)
click to toggle source
# File lib/partial_menu/menu.rb, line 47 def add_items(items) items.each do |item| @items << PartialMenu::MenuItem.new(item, self) end end
set_id()
click to toggle source
# File lib/partial_menu/menu.rb, line 53 def set_id @id = if @parent.try(:class) == 'PartialMenu::MenuItem' @parent.id + '_submenu' else @layout + '_menu' end end