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.



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

def initialize(reports)
  @reports = reports
end

Instance Attribute Details

#reportsObject (readonly)

Returns the value of attribute reports.



7
8
9
# File 'lib/suma/svg_quality/batch_report.rb', line 7

def reports
  @reports
end

Instance Method Details

#avg_error_countObject



35
36
37
38
39
# File 'lib/suma/svg_quality/batch_report.rb', line 35

def avg_error_count
  return 0 if @reports.empty?

  total_errors.to_f / total_files
end

#avg_quality_scoreObject



25
26
27
28
29
# File 'lib/suma/svg_quality/batch_report.rb', line 25

def avg_quality_score
  return 0 if @reports.empty?

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

#failedObject



21
22
23
# File 'lib/suma/svg_quality/batch_report.rb', line 21

def failed
  total_files - successful
end

#filter_by_min_errors(min) ⇒ Object



63
64
65
66
67
# File 'lib/suma/svg_quality/batch_report.rb', line 63

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



57
58
59
60
61
# File 'lib/suma/svg_quality/batch_report.rb', line 57

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

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

#quality_distributionObject



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

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



53
54
55
# File 'lib/suma/svg_quality/batch_report.rb', line 53

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

#sort_by_qualityObject



49
50
51
# File 'lib/suma/svg_quality/batch_report.rb', line 49

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

#successfulObject



17
18
19
# File 'lib/suma/svg_quality/batch_report.rb', line 17

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

#to_json(*_args) ⇒ Object



69
70
71
# File 'lib/suma/svg_quality/batch_report.rb', line 69

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

#to_yamlObject



73
74
75
# File 'lib/suma/svg_quality/batch_report.rb', line 73

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

#total_errorsObject



31
32
33
# File 'lib/suma/svg_quality/batch_report.rb', line 31

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

#total_filesObject



13
14
15
# File 'lib/suma/svg_quality/batch_report.rb', line 13

def total_files
  @reports.size
end