class Ruumba::Correctors::StdinCorrector

Corrector for when the checked file was passed through stdin.

Attributes

digestor[R]
parser[R]

Public Class Methods

new(digestor, parser) click to toggle source
# File lib/ruumba/correctors.rb, line 25
def initialize(digestor, parser)
  @digestor = digestor
  @parser = parser
end

Public Instance Methods

correct(stdout, stderr, file_mappings) click to toggle source
# 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