Class: Ruumba::Correctors::StdinCorrector

Inherits:
Object
  • Object
show all
Includes:
Replacer
Defined in:
lib/ruumba/correctors.rb

Overview

Corrector for when the checked file was passed through stdin.

Instance Method Summary collapse

Methods included from Replacer

#handle_corrected_output

Constructor Details

#initialize(digestor, parser) ⇒ StdinCorrector

Returns a new instance of StdinCorrector.



25
26
27
28
# File 'lib/ruumba/correctors.rb', line 25

def initialize(digestor, parser)
  @digestor = digestor
  @parser = parser
end

Instance Method Details

#correct(stdout, stderr, file_mappings) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/ruumba/correctors.rb', line 30

def correct(stdout, stderr, file_mappings)
  _, old_ruumba_digest, original_contents = *file_mappings.values.first

  [stdout, stderr].each do |output|
    next if output.nil? || output.empty?

    matches = output.scan(/\A(.*====================)?$(.*)\z/m)

    next if matches.empty?

    prefix, new_contents = *matches.first

    handle_corrected_output(old_ruumba_digest, new_contents, original_contents) do |corrected_output|
      output.clear
      output.concat("#{prefix}\n#{corrected_output}")
    end
  end
end