Class: Suma::SvgQuality::Report
- Inherits:
-
Object
- Object
- Suma::SvgQuality::Report
- Defined in:
- lib/suma/svg_quality/report.rb
Overview
Simple report object wrapping svg_conform ValidationResult
Instance Attribute Summary collapse
-
#error_count ⇒ Object
readonly
Returns the value of attribute error_count.
-
#errors ⇒ Object
readonly
Returns the value of attribute errors.
-
#file_path ⇒ Object
readonly
Returns the value of attribute file_path.
Instance Method Summary collapse
- #errors_by_severity ⇒ Object
-
#initialize(file_path, validation_result) ⇒ Report
constructor
A new instance of Report.
- #quality_score ⇒ Object
- #quality_tier ⇒ Object
- #to_h ⇒ Object
- #valid? ⇒ Boolean
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_count ⇒ Object (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 |
#errors ⇒ Object (readonly)
Returns the value of attribute errors.
7 8 9 |
# File 'lib/suma/svg_quality/report.rb', line 7 def errors @errors end |
#file_path ⇒ Object (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_severity ⇒ Object
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_score ⇒ Object
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_tier ⇒ Object
20 21 22 |
# File 'lib/suma/svg_quality/report.rb', line 20 def quality_tier QualityTiers.for_error_count(@error_count) end |
#to_h ⇒ Object
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
16 17 18 |
# File 'lib/suma/svg_quality/report.rb', line 16 def valid? @validation_result&.valid? || false end |