This class produces HTML output for Ruport's Row, Table, Group, and Grouping controllers. It can be subclassed, as it has some helper methods that might be useful for custom output.
:show_table_headers True by default
:show_group_headers True by default
:style Used for grouping (:inline, :justified)
Hook for setting available options using a template. See the template documentation for the available options and their format.
# File lib/ruport/formatter/html.rb, line 33 def apply_template apply_table_format_template(template.table) apply_grouping_format_template(template.grouping) end
Creates the group body. Since group data is a table, just uses the Table controller.
# File lib/ruport/formatter/html.rb, line 81 def build_group_body render_table data, options.to_hash end
Renders the header for a group using the group name.
# File lib/ruport/formatter/html.rb, line 74 def build_group_header output << "\t<p>#{data.name}</p>\n" end
Generates the body for a grouping. Iterates through the groups and renders them using the group controller.
# File lib/ruport/formatter/html.rb, line 88 def build_grouping_body case options.style when :inline render_inline_grouping(options) when :justified render_justified_grouping end end
Renders individual rows for the table.
# File lib/ruport/formatter/html.rb, line 65 def build_row(data = self.data) output << "\t\t<tr>\n\t\t\t<td>" + data.to_a.join("</td>\n\t\t\t<td>") + "</td>\n\t\t</tr>\n" end
Uses the Row controller to build up the table body. Replaces nil and empty strings with " "
# File lib/ruport/formatter/html.rb, line 53 def build_table_body data.each do |row| build_row(row.map { |e| e.to_s.empty? ? " " : e }) end end
Generates table headers based on the column names of your Data::Table.
This method does not do anything if options.show_table_headers is false or the Data::Table has no column names.
# File lib/ruport/formatter/html.rb, line 42 def build_table_header output << "\t<table>\n" unless data.column_names.empty? || !options.show_table_headers output << "\t\t<tr>\n\t\t\t<th>" + data.column_names.join("</th>\n\t\t\t<th>") + "</th>\n\t\t</tr>\n" end end
Generates <table> tags enclosing the yielded content.
Example:
output << html_table { "<tr><td>1</td><td>2</td></tr>\n" } #=> "<table>\n<tr><td>1</td><td>2</td></tr>\n</table>\n"
# File lib/ruport/formatter/html.rb, line 104 def html_table "<table>\n" << yield << "</table>\n" end
Uses RedCloth to turn a string containing textile markup into HTML.
Example:
textile "*bar*" #=> "<p><strong>foo</strong></p>"
# File lib/ruport/formatter/html.rb, line 114 def textile(s) require "redcloth" RedCloth.new(s).to_html rescue LoadError raise RuntimeError, "You need RedCloth!\n gem install RedCloth -v 3.0.3" end
Generated with the Darkfish Rdoc Generator 2.