Class: Nutmeg::TagTreeHelper
- Inherits:
-
Object
- Object
- Nutmeg::TagTreeHelper
- Defined in:
- lib/nutmeg/tag_tree_helper.rb
Instance Attribute Summary collapse
-
#tree ⇒ Object
Returns the value of attribute tree.
Instance Method Summary collapse
-
#initialize(tree) ⇒ TagTreeHelper
constructor
A new instance of TagTreeHelper.
- #node_html(node, active, leaf, content) ⇒ Object
- #node_path(node) ⇒ Object
- #print_html(tags_given) ⇒ Object
- #print_node(node, tags_given) ⇒ Object
- #render_node?(node, tags_given) ⇒ Boolean
- #traverse_node?(node, tags_given) ⇒ Boolean
Constructor Details
#initialize(tree) ⇒ TagTreeHelper
Returns a new instance of TagTreeHelper.
4 5 6 7 |
# File 'lib/nutmeg/tag_tree_helper.rb', line 4 def initialize(tree) raise "No valid data type" unless tree.class == TagTree @tree = tree end |
Instance Attribute Details
#tree ⇒ Object
Returns the value of attribute tree.
3 4 5 |
# File 'lib/nutmeg/tag_tree_helper.rb', line 3 def tree @tree end |
Instance Method Details
#node_html(node, active, leaf, content) ⇒ Object
13 14 15 |
# File 'lib/nutmeg/tag_tree_helper.rb', line 13 def node_html(node, active, leaf, content) "<li class='level_#{node.level}#{leaf ? ' leaf' : ''}#{active ? ' active' : ''}'> <a #{(leaf) ? "href=\'#{node_path(node)}\'" : ''}>#{content}</a>" end |
#node_path(node) ⇒ Object
17 18 19 |
# File 'lib/nutmeg/tag_tree_helper.rb', line 17 def node_path(node) ([""] + node.parentage.map{|p| p.content[:slug]}.reverse.reject{|n| n == "root"} + [node.content[:slug]]).join("/") end |
#print_html(tags_given) ⇒ Object
9 10 11 |
# File 'lib/nutmeg/tag_tree_helper.rb', line 9 def print_html() [print_node(@tree.original, )].join("") end |
#print_node(node, tags_given) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/nutmeg/tag_tree_helper.rb', line 21 def print_node(node, ) output = [] if render_node?(node,) output << node_html(node, (!@tree.get_paths().first.nil? && @tree.get_paths().first.map(&:name).include?(node.name)), node.is_leaf?, node.content[:slug]) end if !traverse_node?(node, ) output << "</li>" return output end if node.has_children? output << "<ul>" node.children.each do |child| output << print_node(child, ) end output << "</ul>" end if render_node?(node,) output << "</li>" end output end |
#render_node?(node, tags_given) ⇒ Boolean
44 45 46 47 |
# File 'lib/nutmeg/tag_tree_helper.rb', line 44 def render_node?(node, ) return false if node.is_root? traverse_node?(node, ) end |
#traverse_node?(node, tags_given) ⇒ Boolean
49 50 51 52 53 |
# File 'lib/nutmeg/tag_tree_helper.rb', line 49 def traverse_node?(node, ) return true if node.is_root? return true if node.level == 1 (node.parentage.select{|n| n.level == 1}.map{|n| n.content[:slug]} & ).count >= 1 end |