class Blinkr::Report

Constants

TMPL

Public Class Methods

new(context, engine, config) click to toggle source
# File lib/blinkr/report.rb, line 14
def initialize context, engine, config
  @context = context
  @engine = engine
  @config = config
end
render(context, engine, config) click to toggle source
# File lib/blinkr/report.rb, line 10
def self.render(context, engine, config)
  
end

Public Instance Methods

render() click to toggle source
# File lib/blinkr/report.rb, line 20
def render
  @context.total = 0
  @context.severity = {}
  @context.category = {}
  @context.type = {}
  @context.pages.each do |url, page|
    page.url = url
    page.max_severity = ::Blinkr::SEVERITY.first # :success
    page.severities = []
    page.categories = []
    page.types = []
    page.errors.each do |error|
      raise "#{error.severity} not a valid severity. Must be one of #{::Blinkr::SEVERITY.join(',')}" unless ::Blinkr::SEVERITY.include? error.severity
      raise "#{error.category} must be specified." if error.category.nil?
      @context.total += 1
      @context.severity[error.severity] ||= OpenStruct.new({:count => 0})
      @context.severity[error.severity].count += 1
      page.severities << error.severity
      page.max_severity = error.severity if ::Blinkr::SEVERITY.index(error.severity) > ::Blinkr::SEVERITY.index(page.max_severity)
      @context.category[error.category] ||= OpenStruct.new({:count => 0})
      @context.category[error.category].count += 1
      page.categories << error.category
      @context.type[error.type] ||= OpenStruct.new({:count => 0})
      @context.type[error.type].count += 1
      page.types << error.type
    end
    page.severities.uniq!
    page.categories.uniq!
    page.types.uniq!
  end
  @context.pages = @context.pages.values
  File.open(@config.report, 'w') do |file|
    file.write(Slim::Template.new(TMPL).render(OpenStruct.new({:blinkr => @context, :engine => @engine,
                                                               :errors => @context.to_json})))
  end
  
  puts "Wrote report to #{@config.report}" if @config.verbose
end