Class: Hirb::Helpers::ParentChildTree
- Defined in:
- lib/hirb/helpers/parent_child_tree.rb
Instance Attribute Summary
Attributes inherited from Tree
Class Method Summary collapse
-
.build_node(node, level) ⇒ Object
:nodoc:.
-
.render(root_node, options = {}) ⇒ Object
Starting with the given node, this builds a tree by recursively calling a children method.
Methods inherited from Tree
#initialize, #mark_last_nodes_per_level, #render, #render_basic, #render_description, #render_directory, #render_nodes, #render_number, #render_tree, #validate_nodes
Constructor Details
This class inherits a constructor from Hirb::Helpers::Tree
Class Method Details
.build_node(node, level) ⇒ Object
:nodoc:
19 20 21 22 |
# File 'lib/hirb/helpers/parent_child_tree.rb', line 19 def build_node(node, level) #:nodoc: @nodes << {:value=>@value_method.call(node), :level=>level} @children_method.call(node).each {|e| build_node(e, level + 1)} end |
.render(root_node, options = {}) ⇒ Object
Starting with the given node, this builds a tree by recursively calling a children method. Takes same options as Hirb::Helper::Table.render with some additional ones below.
Options:
- :value_method
-
Method or proc to call to display as a node’s value. If not given, uses :name if node responds to :name or defaults to :object_id.
- :children_method
-
Method or proc to call to obtain a node’s children. Default is :children.
9 10 11 12 13 14 15 16 17 |
# File 'lib/hirb/helpers/parent_child_tree.rb', line 9 def render(root_node, ={}) value_method = [:value_method] || (root_node.respond_to?(:name) ? :name : :object_id) @value_method = value_method.is_a?(Proc) ? value_method : lambda {|n| n.send(value_method) } children_method = [:children_method] || :children @children_method = children_method.is_a?(Proc) ? children_method : lambda {|n| n.send(children_method)} @nodes = [] build_node(root_node, 0) super(@nodes, ) end |