Class: Tailor::Reporter
- Inherits:
-
Object
- Object
- Tailor::Reporter
- 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
-
#formatters ⇒ Object
readonly
Returns the value of attribute formatters.
Instance Method Summary collapse
-
#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.
-
#initialize(*formats) ⇒ Reporter
constructor
For each in
formats
, it creates a new Tailor::Formatter::#{formatter.capitalize} object and adds it to @formatters. -
#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.
Constructor Details
#initialize(*formats) ⇒ Reporter
For each in formats
, it creates a new Tailor::Formatter::#{formatter.capitalize} object and adds it to @formatters.
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/tailor/reporter.rb', line 12 def initialize(*formats) formats = %w(text) if formats.nil? || formats.empty? @formatters = formats.flatten.map do |formatter| retried = false begin Tailor::Formatters.const_get(formatter.capitalize).new rescue NameError require_relative "formatters/#{formatter}" if retried next else retried = true retry end end end.uniq @formatters.compact! end |
Instance Attribute Details
#formatters ⇒ Object (readonly)
Returns the value of attribute formatters.
5 6 7 |
# File 'lib/tailor/reporter.rb', line 5 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.
45 46 47 48 49 |
# File 'lib/tailor/reporter.rb', line 45 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.
55 56 57 58 59 60 61 62 63 64 |
# File 'lib/tailor/reporter.rb', line 55 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 |