Class: Suma::SvgQuality::Report

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

Overview

Simple report object wrapping svg_conform ValidationResult

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(file_path, validation_result) ⇒ Report

Returns a new instance of Report.



9
10
11
12
13
14
# File 'lib/suma/svg_quality/report.rb', line 9

def initialize(file_path, validation_result)
  @file_path = file_path
  @validation_result = validation_result
  @error_count = validation_result&.error_count || 0
  @errors = validation_result&.errors || []
end

Instance Attribute Details

#error_countObject (readonly)

Returns the value of attribute error_count.



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

def error_count
  @error_count
end

#errorsObject (readonly)

Returns the value of attribute errors.



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

def errors
  @errors
end

#file_pathObject (readonly)

Returns the value of attribute file_path.



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

def file_path
  @file_path
end

Instance Method Details

#errors_by_severityObject



31
32
33
34
35
36
37
38
# File 'lib/suma/svg_quality/report.rb', line 31

def errors_by_severity
  {
    critical: @errors.count { |e| e.requirement_id =~ /critical/i },
    high: @errors.count { |e| e.requirement_id =~ /high/i },
    medium: @errors.count { |e| e.requirement_id =~ /medium/i },
    low: @errors.count { |e| e.requirement_id =~ /low/i },
  }
end

#quality_scoreObject



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

def quality_score
  return 100 if @error_count.zero?
  return 0 if @error_count >= 200

  [100 - (@error_count * 0.5), 0].max.round
end

#quality_tierObject



20
21
22
# File 'lib/suma/svg_quality/report.rb', line 20

def quality_tier
  QualityTiers.for_error_count(@error_count)
end

#to_hObject



40
41
42
43
44
45
46
47
48
49
# File 'lib/suma/svg_quality/report.rb', line 40

def to_h
  {
    file_path: @file_path,
    valid: valid?,
    error_count: @error_count,
    quality_score: quality_score,
    quality_tier: quality_tier[:name],
    errors_by_severity: errors_by_severity,
  }
end

#valid?Boolean

Returns:

  • (Boolean)


16
17
18
# File 'lib/suma/svg_quality/report.rb', line 16

def valid?
  @validation_result&.valid? || false
end