Parent

Files

Class/Module Index [+]

Quicksearch

RuboCop::Cop::Corrector

This class takes a source buffer and rewrite its source based on the different correction rules supplied.

Important! The nodes modified by the corrections should be part of the AST of the source_buffer.

Public Class Methods

new(source_buffer, corrections) click to toggle source

@param source_buffer [Parser::Source::Buffer] @param corrections [Array(call)]

Array of Objects that respond to #call. They will receive the
corrector itself and should use its method to modify the source.

@example

class AndOrCorrector

def initialize(node)
  @node = node
end

def call(corrector)
  replacement = (@node.type == :and ? '&&' : '||')
  corrector.replace(@node.loc.operator, replacement)
end

end

corrections = [AndOrCorrector.new(node)] corrector = Corrector.new(source_buffer, corrections)

# File lib/rubocop/cop/corrector.rb, line 32
def initialize(source_buffer, corrections)
  @source_buffer = source_buffer
  @corrections = corrections
  @source_rewriter = Parser::Source::Rewriter.new(source_buffer)
end

Public Instance Methods

insert_after(range, content) click to toggle source

Inserts new code after the given source range.

@param [Parser::Source::Range] range @param [String] content

# File lib/rubocop/cop/corrector.rb, line 70
def insert_after(range, content)
  @source_rewriter.insert_after(range, content)
end
insert_before(range, content) click to toggle source

Inserts new code before the given source range.

@param [Parser::Source::Range] range @param [String] content

# File lib/rubocop/cop/corrector.rb, line 62
def insert_before(range, content)
  @source_rewriter.insert_before(range, content)
end
remove(range) click to toggle source

Removes the source range.

@param [Parser::Source::Range] range

# File lib/rubocop/cop/corrector.rb, line 54
def remove(range)
  @source_rewriter.remove(range)
end
replace(range, content) click to toggle source

Replaces the code of the source range `range` with `content`.

@param [Parser::Source::Range] range @param [String] content

# File lib/rubocop/cop/corrector.rb, line 78
def replace(range, content)
  @source_rewriter.replace(range, content)
end
rewrite() click to toggle source

Does the actual rewrite and returns string corresponding to the rewritten source.

@return [String] TODO: Handle conflict exceptions raised from the Source::Rewriter

# File lib/rubocop/cop/corrector.rb, line 43
def rewrite
  @corrections.each do |correction|
    correction.call(self)
  end

  @source_rewriter.process
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.