class Attractor::HtmlReporter

HTML reporter

Public Instance Methods

css() click to toggle source
# File lib/attractor/reporters/html_reporter.rb, line 57
def css
  File.read(File.expand_path("../../../app/assets/stylesheets/main.css", __dir__))
end
favicon() click to toggle source
# File lib/attractor/reporters/html_reporter.rb, line 53
def favicon
  File.read(File.expand_path("../../../app/assets/images/attractor_favicon.png", __dir__))
end
javascript() click to toggle source
# File lib/attractor/reporters/html_reporter.rb, line 65
def javascript
  template = Tilt.new(File.expand_path("../../../app/assets/javascripts/index.js.erb", __dir__))
  template.render self
end
javascript_pack() click to toggle source
# File lib/attractor/reporters/html_reporter.rb, line 61
def javascript_pack
  File.read(File.expand_path("../../../app/assets/javascripts/index.pack.js", __dir__))
end
render() click to toggle source
# File lib/attractor/reporters/html_reporter.rb, line 70
def render
  template = Tilt.new(File.expand_path("../../../app/views/index.html.erb", __dir__))
  template.render self
end
report() click to toggle source
Calls superclass method Attractor::BaseReporter#report
# File lib/attractor/reporters/html_reporter.rb, line 6
def report
  super

  puts "Generating an HTML report"
  @serve_static = true

  FileUtils.mkdir_p "./attractor_output"
  FileUtils.mkdir_p "./attractor_output/stylesheets"
  FileUtils.mkdir_p "./attractor_output/images"
  FileUtils.mkdir_p "./attractor_output/javascripts"

  File.open("./attractor_output/images/attractor_logo.svg", "w") { |file| file.write(logo) }
  File.open("./attractor_output/images/attractor_favicon.png", "w") { |file| file.write(favicon) }
  File.open("./attractor_output/stylesheets/main.css", "w") { |file| file.write(css) }
  File.open("./attractor_output/javascripts/index.pack.js", "w") { |file| file.write(javascript_pack) }

  if @calculators.size > 1
    @calculators.each do |calc|
      @short_type = calc.first
      suggester = Suggester.new(values(type: @short_type))
      @suggestions = suggester.suggest

      File.open("./attractor_output/javascripts/index.#{@short_type}.js", "w") { |file| file.write(javascript) }
      File.open("./attractor_output/index.#{@short_type}.html", "w") { |file| file.write(render) }
      puts "Generated HTML report at #{File.expand_path "./attractor_output/"}/index.#{@short_type}.html"
    end

    if @open_browser
      Launchy.open(File.expand_path("./attractor_output/index.#{@calculators.first.first}.html"))
      puts "Opening browser window..."
    end
  else
    File.open("./attractor_output/javascripts/index.js", "w") { |file| file.write(javascript) }
    File.open("./attractor_output/index.html", "w") { |file| file.write(render) }
    puts "Generated HTML report at #{File.expand_path "./attractor_output/index.html"}"

    if @open_browser
      Launchy.open(File.expand_path("./attractor_output/index.html"))
      puts "Opening browser window..."
    end
  end
end