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