Class: SvgConform::RemediationRunResult

Inherits:
Object
  • Object
show all
Defined in:
lib/svg_conform/remediation_runner.rb

Overview

Result object for overall remediation run (not individual remediation result)

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(filename:, original_content:, remediated_content:, initial_validation:, final_validation:, remediation_results:, remediation_engine:, error: nil) ⇒ RemediationRunResult

Returns a new instance of RemediationRunResult.



119
120
121
122
123
124
125
126
127
128
129
130
# File 'lib/svg_conform/remediation_runner.rb', line 119

def initialize(filename:, original_content:, remediated_content:,
               initial_validation:, final_validation:, remediation_results:,
               remediation_engine:, error: nil)
  @filename = filename
  @original_content = original_content
  @remediated_content = remediated_content
  @initial_validation = initial_validation
  @final_validation = final_validation
  @remediation_results = remediation_results
  @remediation_engine = remediation_engine
  @error = error
end

Instance Attribute Details

#errorObject (readonly)

Returns the value of attribute error.



115
116
117
# File 'lib/svg_conform/remediation_runner.rb', line 115

def error
  @error
end

#filenameObject (readonly)

Returns the value of attribute filename.



115
116
117
# File 'lib/svg_conform/remediation_runner.rb', line 115

def filename
  @filename
end

#final_validationObject (readonly)

Returns the value of attribute final_validation.



115
116
117
# File 'lib/svg_conform/remediation_runner.rb', line 115

def final_validation
  @final_validation
end

#initial_validationObject (readonly)

Returns the value of attribute initial_validation.



115
116
117
# File 'lib/svg_conform/remediation_runner.rb', line 115

def initial_validation
  @initial_validation
end

#original_contentObject (readonly)

Returns the value of attribute original_content.



115
116
117
# File 'lib/svg_conform/remediation_runner.rb', line 115

def original_content
  @original_content
end

#remediated_contentObject (readonly)

Returns the value of attribute remediated_content.



115
116
117
# File 'lib/svg_conform/remediation_runner.rb', line 115

def remediated_content
  @remediated_content
end

#remediation_engineObject (readonly)

Returns the value of attribute remediation_engine.



115
116
117
# File 'lib/svg_conform/remediation_runner.rb', line 115

def remediation_engine
  @remediation_engine
end

#remediation_resultsObject (readonly)

Returns the value of attribute remediation_results.



115
116
117
# File 'lib/svg_conform/remediation_runner.rb', line 115

def remediation_results
  @remediation_results
end

Instance Method Details

#changes_summaryObject

Get summary of changes



179
180
181
182
183
184
185
186
187
188
# File 'lib/svg_conform/remediation_runner.rb', line 179

def changes_summary
  return "Error occurred" if @error
  return "No validation performed" if @initial_validation.nil?

  if content_modified?
    "#{issues_fixed} issues fixed, #{remediations_applied} remediations applied"
  else
    "No changes needed"
  end
end

#content_modified?Boolean

Check if content was modified

Returns:

  • (Boolean)


172
173
174
175
176
# File 'lib/svg_conform/remediation_runner.rb', line 172

def content_modified?
  return false if @original_content.nil? || @remediated_content.nil?

  normalize_content(@original_content) != normalize_content(@remediated_content)
end

#error?Boolean

Check if there was an error

Returns:

  • (Boolean)


138
139
140
# File 'lib/svg_conform/remediation_runner.rb', line 138

def error?
  !@error.nil?
end

#failed_remediationsObject

Get failed remediations



165
166
167
168
169
# File 'lib/svg_conform/remediation_runner.rb', line 165

def failed_remediations
  return [] if @remediation_results.nil?

  @remediation_results.select(&:failure?)
end

#generate_conformance_reportObject

Generate a conformance report for the final state



207
208
209
210
211
212
213
214
215
216
# File 'lib/svg_conform/remediation_runner.rb', line 207

def generate_conformance_report
  return nil if @final_validation.nil? || @filename.nil?

  SvgConform::ConformanceReport.from_svg_conform_result(
    @filename,
    @final_validation,
    profile: @remediation_engine&.profile&.name || :unknown,
    use_svgcheck_mapping: true,
  )
end

#issues_fixedObject

Get the number of issues fixed



143
144
145
146
147
148
149
150
# File 'lib/svg_conform/remediation_runner.rb', line 143

def issues_fixed
  return 0 if @error || @initial_validation.nil? || @final_validation.nil?

  initial_errors = @initial_validation.failed_requirements.length
  final_errors = @final_validation.failed_requirements.length

  [initial_errors - final_errors, 0].max
end

#remediations_appliedObject

Get the number of remediations applied



153
154
155
# File 'lib/svg_conform/remediation_runner.rb', line 153

def remediations_applied
  @remediation_results&.length || 0
end

#success?Boolean

Check if remediation was successful

Returns:

  • (Boolean)


133
134
135
# File 'lib/svg_conform/remediation_runner.rb', line 133

def success?
  @error.nil? && @final_validation&.valid?
end

#successful_remediationsObject

Get successful remediations



158
159
160
161
162
# File 'lib/svg_conform/remediation_runner.rb', line 158

def successful_remediations
  return [] if @remediation_results.nil?

  @remediation_results.select(&:success?)
end

#to_hObject

Convert to hash for serialization



191
192
193
194
195
196
197
198
199
200
201
202
203
204
# File 'lib/svg_conform/remediation_runner.rb', line 191

def to_h
  {
    filename: @filename,
    success: success?,
    error: @error&.message,
    issues_fixed: issues_fixed,
    remediations_applied: remediations_applied,
    content_modified: content_modified?,
    changes_summary: changes_summary,
    initial_errors: @initial_validation&.failed_requirements&.length || 0,
    final_errors: @final_validation&.failed_requirements&.length || 0,
    remediation_details: @remediation_results&.map(&:to_h) || [],
  }
end