Class: Suma::SvgQuality::BatchReport

Inherits:
Object
  • Object
show all
Defined in:
lib/suma/svg_quality/batch_report.rb

Overview

Batch report wrapping multiple SVG quality reports

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(reports) ⇒ BatchReport

Returns a new instance of BatchReport.



11
12
13
# File 'lib/suma/svg_quality/batch_report.rb', line 11

def initialize(reports)
  @reports = reports
end

Instance Attribute Details

#reportsObject (readonly)

Returns the value of attribute reports.



9
10
11
# File 'lib/suma/svg_quality/batch_report.rb', line 9

def reports
  @reports
end

Instance Method Details

#avg_error_countObject



37
38
39
40
41
# File 'lib/suma/svg_quality/batch_report.rb', line 37

def avg_error_count
  return 0 if @reports.empty?

  total_errors.to_f / total_files
end

#avg_quality_scoreObject



27
28
29
30
31
# File 'lib/suma/svg_quality/batch_report.rb', line 27

def avg_quality_score
  return 0 if @reports.empty?

  @reports.sum(&:quality_score).to_f / total_files
end

#failedObject



23
24
25
# File 'lib/suma/svg_quality/batch_report.rb', line 23

def failed
  total_files - successful
end

#filter_by_min_errors(min) ⇒ Object



65
66
67
68
69
# File 'lib/suma/svg_quality/batch_report.rb', line 65

def filter_by_min_errors(min)
  return self if min.nil?

  self.class.new(@reports.select { |r| r.error_count >= min })
end

#limit(count) ⇒ Object



59
60
61
62
63
# File 'lib/suma/svg_quality/batch_report.rb', line 59

def limit(count)
  return self if count.nil?

  self.class.new(@reports.first(count))
end

#quality_distributionObject



43
44
45
46
47
48
49
# File 'lib/suma/svg_quality/batch_report.rb', line 43

def quality_distribution
  dist = Hash.new(0)
  @reports.each do |r|
    dist[r.quality_tier[:name].to_s] += 1
  end
  dist
end

#sort_by_errorsObject



55
56
57
# File 'lib/suma/svg_quality/batch_report.rb', line 55

def sort_by_errors
  self.class.new(@reports.sort_by { |r| -r.error_count })
end

#sort_by_qualityObject



51
52
53
# File 'lib/suma/svg_quality/batch_report.rb', line 51

def sort_by_quality
  self.class.new(@reports.sort_by(&:quality_score))
end

#successfulObject



19
20
21
# File 'lib/suma/svg_quality/batch_report.rb', line 19

def successful
  @reports.count(&:valid?)
end

#to_json(*_args) ⇒ Object



71
72
73
# File 'lib/suma/svg_quality/batch_report.rb', line 71

def to_json(*_args)
  JSON.pretty_generate(@reports.map(&:to_h))
end

#to_yamlObject



75
76
77
# File 'lib/suma/svg_quality/batch_report.rb', line 75

def to_yaml
  YAML.dump(@reports.map(&:to_h))
end

#total_errorsObject



33
34
35
# File 'lib/suma/svg_quality/batch_report.rb', line 33

def total_errors
  @reports.sum(&:error_count)
end

#total_filesObject



15
16
17
# File 'lib/suma/svg_quality/batch_report.rb', line 15

def total_files
  @reports.size
end