Class: XhtmlReportGenerator::Generator
- Inherits:
-
Object
- Object
- XhtmlReportGenerator::Generator
- Defined in:
- lib/xhtml_report_generator.rb
Instance Attribute Summary collapse
-
#document ⇒ Object
Returns the value of attribute document.
Class Method Summary collapse
-
.createXhtml(title) ⇒ Object
Creates a minimal valid xhtml document including header title and body elements.
Instance Method Summary collapse
-
#initialize(opts = {}) ⇒ Generator
constructor
A new instance of Generator.
- #to_s(indent = 0) ⇒ Object
- #writeToFile(file, mode = 'w') ⇒ Object
Constructor Details
#initialize(opts = {}) ⇒ Generator
Returns a new instance of Generator.
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/xhtml_report_generator.rb', line 15 def initialize(opts = {}) # define the default values path = File.("../xhtml_report_generator", __FILE__) symbols = { :jquery => File.("jquery.js",path), :toc => File.("toc.js",path), :css => File.("style_template.css",path), :custom_rb => File.("custom.rb",path) } # either use the default files provided with the gem, or those provided by the caller symbols = symbols.merge(opts) for key in symbols.keys do # read the contents into the symbols hash symbols[key] = File.read(symbols[key]) end # load the custom module and extend it, use instance_eval otherwise the module will affect # all existing Generator classes instance_eval symbols[:custom_rb] @document = Generator.createXhtml("Title") head = @document.elements["//head"] # insert the custom css, and javascript files style = head.add_element("style", {"type" => "text/css"}) # remove all newlines style.add_text(REXML::CData.new("\n"+symbols[:css].gsub(/\n/, "")+"\n")) script = head.add_element("script", {"type" => "text/javascript"}) script.add_text(REXML::CData.new("\n"+symbols[:jquery]+"\n")) script = head.add_element("script", {"type" => "text/javascript"}) script.add_text(REXML::CData.new("\n"+symbols[:toc]+"\n")) end |
Instance Attribute Details
#document ⇒ Object
Returns the value of attribute document.
9 10 11 |
# File 'lib/xhtml_report_generator.rb', line 9 def document @document end |
Class Method Details
.createXhtml(title) ⇒ Object
Creates a minimal valid xhtml document including header title and body elements
50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/xhtml_report_generator.rb', line 50 def self.createXhtml(title) header = '<?xml version="1.0" encoding="UTF-8" standalone="no"?>' header += '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">' doc = REXML::Document.new(header) html = doc.add_element("html", {"xmlns" => "http://www.w3.org/1999/xhtml"}) # create header head = html.add_element("head") t = head.add_element("title") t.text = title html.add_element("body") return doc end |
Instance Method Details
#to_s(indent = 0) ⇒ Object
64 65 66 67 68 69 |
# File 'lib/xhtml_report_generator.rb', line 64 def to_s(indent = 0) output = "" # note transitive is needed to preserve newlines in <pre> tags @document.write(:output=>output,:indent=>indent, :transitive=>true) return output end |
#writeToFile(file, mode = 'w') ⇒ Object
71 72 73 |
# File 'lib/xhtml_report_generator.rb', line 71 def writeToFile(file, mode='w') File.open(file, "#{mode}:UTF-8") {|f| f.write(self.to_s)} end |