Sha256: cd8d520c642ae5e11c1d4ec5b30820ff9eeda8d4435adb9a3fb71299e1ccd13c
Contents?: true
Size: 1.98 KB
Versions: 2
Compression:
Stored size: 1.98 KB
Contents
module Nutmeg class TagTreeHelper attr_accessor :tree def initialize(tree, options = {}) raise "No valid data type" unless tree.class == TagTree @options = options @tree = tree end def prepend_path @options[:prepend_path] || "" end def append_path @options[:append_path] || "" end def title(node) node.content[:name] || node.content[:slug] end def print_html(tags_given, greedy = false, extra_html = nil) [print_node(@tree.original, tags_given, greedy, extra_html)].join("") end def node_html(node, active, leaf, content, extra_html = nil) "<li class='level_#{node.level}#{leaf ? ' leaf' : ''}#{active ? ' active' : ''}'> <a #{(leaf) ? "href=\'#{prepend_path}#{node_path(node)}#{append_path}\'" : ''}>#{content}</a>#{extra_html && active && leaf ? extra_html : ''}" end def node_path(node) ([""] + node.parentage.map{|p| p.content[:slug]}.reverse.reject{|n| n == "root"} + [node.content[:slug]]).join("/") end def print_node(node, tags_given, greedy = false, extra_html = nil) 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) || (greedy == true && tags_given.include?(node.content[:slug]))), node.is_leaf?, title(node), extra_html) 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, greedy,extra_html) end output << "</ul>" end if render_node?(node,tags_given) output << "</li>" end output end def render_node?(node, tags_given) return false if node.is_root? traverse_node?(node, tags_given) end def traverse_node?(node, tags_given) true end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
nutmeg-0.0.10 | lib/nutmeg/tag_tree_helper.rb |
nutmeg-0.0.9 | lib/nutmeg/tag_tree_helper.rb |