Class: Nutmeg::TagTreeHelper

Inherits:
Object
  • Object
show all
Defined in:
lib/nutmeg/tag_tree_helper.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

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

#treeObject

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


9
10
11
# File 'lib/nutmeg/tag_tree_helper.rb', line 9

def print_html(tags_given)
  [print_node(@tree.original, tags_given)].join("")
end


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, tags_given)
  output = []
  if render_node?(node,tags_given)
    output << node_html(node, (!@tree.get_paths(tags_given).first.nil? && @tree.get_paths(tags_given).first.map(&:name).include?(node.name)), node.is_leaf?, node.content[:slug])
  end

  if !traverse_node?(node, tags_given)
    output << "</li>"
    return output
  end
  if node.has_children?
    output << "<ul>"
      node.children.each do |child|
        output << print_node(child, tags_given)
      end
    output << "</ul>"
  end
  if render_node?(node,tags_given)
    output << "</li>"
  end
  output
end

#render_node?(node, tags_given) ⇒ Boolean

Returns:

  • (Boolean)


44
45
46
47
# File 'lib/nutmeg/tag_tree_helper.rb', line 44

def render_node?(node, tags_given)
  return false if node.is_root?
  traverse_node?(node, tags_given)
end

#traverse_node?(node, tags_given) ⇒ Boolean

Returns:

  • (Boolean)


49
50
51
52
53
# File 'lib/nutmeg/tag_tree_helper.rb', line 49

def traverse_node?(node, tags_given)
  return true if node.is_root?
  return true if node.level == 1
  (node.parentage.select{|n| n.level == 1}.map{|n| n.content[:slug]} & tags_given).count >= 1
end