module FoundationNavigation::Builder

Attributes

node[RW]

Public Instance Methods

build_subtree(klass, *args, &block) click to toggle source
# File lib/foundation-navigation/builder.rb, line 39
def build_subtree(klass, *args, &block)
  @node.children << klass.new(*args, &block).node
end
divider() click to toggle source
# File lib/foundation-navigation/builder.rb, line 31
def divider
  build_subtree(FoundationNavigation::Divider)
end
dropdown(*args, &block) click to toggle source
left(&block) click to toggle source
# File lib/foundation-navigation/builder.rb, line 7
def left(&block)
  @node.children << FoundationNavigation::MenuGroup.new(
    orientation: 'left', &block
  ).node
end
menu_group(*args, &block) click to toggle source
menu_item(*args, &block) click to toggle source
method_missing(method, *args, &block) click to toggle source
# File lib/foundation-navigation/builder.rb, line 47
def method_missing(method, *args, &block)
  if %i(li ul nav div h1 a span section).include? method
    add_node(method, *args, &block)
  else
    @self_before_instance_eval.send(method, *args, &block)
  end
end
right(&block) click to toggle source
# File lib/foundation-navigation/builder.rb, line 13
def right(&block)
  @node.children << FoundationNavigation::MenuGroup.new(
    orientation: 'right', &block
  ).node
end
title_area(*args, &block) click to toggle source
# File lib/foundation-navigation/builder.rb, line 23
def title_area(*args, &block)
  build_subtree(FoundationNavigation::TitleArea, *args, &block)
end
to_s() click to toggle source
# File lib/foundation-navigation/builder.rb, line 43
def to_s
  @node.to_s
end

Private Instance Methods

add_node(name, *opts, &block) click to toggle source
# File lib/foundation-navigation/builder.rb, line 56
def add_node(name, *opts, &block)
  parent = @node
  @node = Node.new(parent, name, *opts)
  parent.children << @node if parent
  if block_given?
    @self_before_instance_eval = eval "self", block.binding
    val = instance_eval(&block)
    @node.children << val if val.is_a?(String)
  end
  parent ? @node = parent : @node
end