Class: AnalDiffist::StdOutReporter
- Inherits:
-
Object
- Object
- AnalDiffist::StdOutReporter
- Defined in:
- lib/analdiffist/std_out_reporter.rb
Instance Method Summary collapse
- #describe(problems, mode) ⇒ Object
- #describe_problems(problems, title, mode) ⇒ Object
- #report(diff, from_rev, to_rev) ⇒ Object
- #sum_scores(diffs) ⇒ Object
Instance Method Details
#describe(problems, mode) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/analdiffist/std_out_reporter.rb', line 28 def describe(problems, mode) results = [] by_type = problems.group_by do |prob| prob.context.split(/(\#|\.)/).first end by_type.keys.sort.each do |type_name| results << " #{type_name}" type_problems = by_type[type_name] by_context = type_problems.group_by do |prob| name = prob.context[type_name.length..-1] end by_context.keys.sort.each do |k| results << " #{k == '' ? '(none)' : k}" results += by_context[k].map {|p| " #{p.description(mode)}"} end end results end |
#describe_problems(problems, title, mode) ⇒ Object
22 23 24 25 26 |
# File 'lib/analdiffist/std_out_reporter.rb', line 22 def describe_problems problems, title, mode sum = sum_scores(problems) puts "\n#{title} (#{problems.length} : #{sum})\n" puts describe(problems, mode).join("\n") end |
#report(diff, from_rev, to_rev) ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 14 |
# File 'lib/analdiffist/std_out_reporter.rb', line 3 def report diff, from_rev, to_rev puts "\n\nAnaldifference between revisions: \n #{from_rev}\n #{to_rev}" sum = sum_scores(diff.added_problems + diff.removed_problems) direction = ["Same", "Worse", "Better"][sum<=>0] puts "Overall: #{'+' if sum > 0}#{sum} (#{direction})" describe_problems(diff.added_problems, 'Worse', :added) describe_problems(diff.removed_problems, 'Better', :removed) puts "\n\n" end |
#sum_scores(diffs) ⇒ Object
16 17 18 19 20 |
# File 'lib/analdiffist/std_out_reporter.rb', line 16 def sum_scores diffs sum = 0.0 diffs.each {|p| sum += p.score} sum.round(1) end |