module MenuTxt::Node

Attributes

children[R]
level[R]
name[R]
parent[R]
url[R]

Public Class Methods

new(name, url = '') click to toggle source
# File lib/menu_txt/node.rb, line 5
def initialize(name, url = '')
  @name, @url, @parent, @children, @level = name, url, nil, [], -1
end

Public Instance Methods

<<(node) click to toggle source
# File lib/menu_txt/node.rb, line 30
def <<(node)
  node.parent = self
  node.level = level + 1
  children << node
end
add_child(name, url) click to toggle source
# File lib/menu_txt/node.rb, line 26
def add_child(name, url)
  self << self.class.new(name, url)
end
each(&block)
Alias for: traverse
leaf?() click to toggle source
# File lib/menu_txt/node.rb, line 11
def leaf?; children.empty? end
traverse() { |self| ... } click to toggle source
# File lib/menu_txt/node.rb, line 13
def traverse(&block)
  if block_given?
    yield(self) if parent

    children.each do |child|
      child.traverse(&block)
    end
  else
    enum_for
  end
end
Also aliased as: each

Protected Instance Methods

level=(int) click to toggle source
# File lib/menu_txt/node.rb, line 38
def level=(int)
  @level = int
end
parent=(node) click to toggle source
# File lib/menu_txt/node.rb, line 42
def parent=(node)
  @parent = node
end