lib/tree_html.rb in tree_html-0.1.4 vs lib/tree_html.rb in tree_html-0.1.5

- old
+ new

@@ -3,57 +3,79 @@ module TreeHtml NO_DATA_IN_A = {}.freeze NO_CHECKBOX = "<label class='placeholder'></label>".freeze BLANK = ''.freeze + NO_CUSTOM_JS = [].freeze + Css = File.read File.expand_path('../tree_html/tree_html.css', __FILE__) + Js = File.read File.expand_path('../tree_html/tree_html.js', __FILE__) def tree_html "<ul class='tree-html'>#{li_for_tree_html}</ul>" end def tree_html_full "<!DOCTYPE HTML><html>"\ - "<head><meta charset='utf-8'/><style>#{main_css_for_tree_html + css_for_tree_html}</style></head>"\ - "<body>#{tree_html}</body>"\ + "<head>"\ + "<meta charset='utf-8'/>"\ + "<style>#{Css + css_for_tree_html}</style>"\ + "#{custom_js head_js_for_tree_html}"\ + "</head>"\ + "<body>"\ + "#{tree_html}"\ + "<script>#{Js}</script>"\ + "#{custom_js body_js_for_tree_html}"\ + "</body>"\ "</html>" end - Css = File.expand_path('../tree_html/tree_html.css', __FILE__) + protected - def main_css_for_tree_html - File.read(Css) + def li_for_tree_html + "<li>#{checkbox}<a #{data_in_a}>#{label_for_tree_html}</a>#{sub_ul}</li>" end - protected + def data_for_tree_html + NO_DATA_IN_A + end - def li_for_tree_html - "<li>#{checkbox_for_tree_html}<a #{data_in_a_for_tree_html}>#{label_for_tree_html}</a>#{sub_ul_for_tree_html}</li>" + def css_for_tree_html + BLANK end - def data_in_a_for_tree_html - data_for_tree_html.map{ |k, v| "data-#{k}='#{v}'" }.join(" ") + def head_js_for_tree_html + NO_CUSTOM_JS end - def data_for_tree_html - NO_DATA_IN_A + def body_js_for_tree_html + NO_CUSTOM_JS end - def checkbox_for_tree_html + private + + def sub_ul if children_for_tree_html.empty? - NO_CHECKBOX + BLANK else - "<input type='checkbox' id='#{object_id}'><label for='#{object_id}'></label>" + "<ul>#{children_for_tree_html.map{|c| c.li_for_tree_html}.join}</ul>" end end - def sub_ul_for_tree_html + def checkbox if children_for_tree_html.empty? - BLANK + NO_CHECKBOX else - "<ul>#{children_for_tree_html.map{|c| c.li_for_tree_html}.join}</ul>" + "<input type='checkbox' id='#{object_id}'><label for='#{object_id}'></label>" end end - def css_for_tree_html - BLANK + def data_in_a + data_for_tree_html.map{ |k, v| "data-#{k}='#{v}'" }.join(" ") + end + + def custom_js scripts + scripts.map do |s| + src = s[:src] ? "src='#{s[:src]}'" : BLANK + "<script #{src}>#{s[:text]}</script>" + end.join end end