Class: AnalDiffist::StdOutReporter

Inherits:
Object
  • Object
show all
Defined in:
lib/analdiffist/std_out_reporter.rb

Instance Method Summary collapse

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