Class: Tailor::Reporter

Inherits:
Object
  • Object
show all
Defined in:
lib/tailor/reporter.rb

Overview

Objects of this type are responsible for sending the right data to report formatters.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*formats) ⇒ Reporter

For each in formats, it creates a new Tailor::Formatter::#{formatter.capitalize} object and adds it to @formatters.

Parameters:

  • formats (Array)

    A list of formatters to use for generating reports.



13
14
15
16
17
18
19
20
21
# File 'lib/tailor/reporter.rb', line 13

def initialize(*formats)
  @formatters = []
  formats = %w[text] if formats.nil? || formats.empty?

  formats.flatten.each do |formatter|
    require_relative "formatters/#{formatter}"
    @formatters << eval("Tailor::Formatters::#{formatter.capitalize}.new")
  end
end

Instance Attribute Details

#formattersObject (readonly)

Returns the value of attribute formatters.



6
7
8
# File 'lib/tailor/reporter.rb', line 6

def formatters
  @formatters
end

Instance Method Details

#file_report(file_problems, label) ⇒ Object

Sends the data to each @formatters to generate the report of problems for the file that was just critiqued. A problem is in the format:

{ 'path/to/file.rb' => [Problem1, Problem2, etc.]}

…where Problem1 and Problem2 are of type Problem.

Parameters:

  • file_problems (Hash)
  • label (Symbol, String)

    The label of the file_set that defines the problems in file_problems.



33
34
35
36
37
# File 'lib/tailor/reporter.rb', line 33

def file_report(file_problems, label)
  @formatters.each do |formatter|
    formatter.file_report(file_problems, label)
  end
end

#summary_report(all_problems, opts = {}) ⇒ Object

Sends the data to each @formatters to generate the reports of problems for all files that were just critiqued.

Parameters:

  • all_problems (Hash)


43
44
45
46
47
48
49
50
51
52
# File 'lib/tailor/reporter.rb', line 43

def summary_report(all_problems, opts={})
  @formatters.each do |formatter|
    summary = formatter.summary_report(all_problems)
    if formatter.respond_to?(:accepts_output_file) &&
      formatter.accepts_output_file &&
      !opts[:output_file].empty?
      File.open(opts[:output_file], 'w') { |f| f.puts summary }
    end
  end
end