class RuboCop::Cop::Corrector
AST of the source_buffer.
The nodes modified by the corrections should be part of the
Important!
based on the different correction rules supplied.
This class takes a source buffer and rewrite its source
def initialize(source_buffer, corrections = [])
-
corrections
(Array(#call)
) -- -
source_buffer
(Parser::Source::Buffer
) --
def initialize(source_buffer, corrections = []) @source_buffer = source_buffer @corrections = corrections @source_rewriter = Parser::Source::Rewriter.new(source_buffer) @diagnostics = [] # Don't print warnings to stderr if corrections conflict with each other @source_rewriter.diagnostics.consumer = lambda do |diagnostic| @diagnostics << diagnostic end end
def insert_after(range, content)
-
content
(String
) -- -
range
(Parser::Source::Range
) --
def insert_after(range, content) @source_rewriter.insert_after(range, content) end
def insert_before(range, content)
-
content
(String
) -- -
range
(Parser::Source::Range
) --
def insert_before(range, content) @source_rewriter.insert_before(range, content) end
def remove(range)
-
range
(Parser::Source::Range
) --
def remove(range) @source_rewriter.remove(range) end
def remove_leading(range, size)
-
size
(Integer
) -- -
range
(Parser::Source::Range
) --
def remove_leading(range, size) to_remove = Parser::Source::Range.new(range.source_buffer, range.begin_pos, range.begin_pos + size) @source_rewriter.remove(to_remove) end
def remove_preceding(range, size)
-
size
(Integer
) -- -
range
(Parser::Source::Range
) --
def remove_preceding(range, size) to_remove = Parser::Source::Range.new(range.source_buffer, range.begin_pos - size, range.begin_pos) @source_rewriter.remove(to_remove) end
def remove_trailing(range, size)
-
size
(Integer
) -- -
range
(Parser::Source::Range
) --
def remove_trailing(range, size) to_remove = Parser::Source::Range.new(range.source_buffer, range.end_pos - size, range.end_pos) @source_rewriter.remove(to_remove) end
def replace(range, content)
-
content
(String
) -- -
range
(Parser::Source::Range
) --
def replace(range, content) @source_rewriter.replace(range, content) end
def rewrite
-
(String)
-
def rewrite # rubocop:disable Lint/HandleExceptions @corrections.each do |correction| begin @source_rewriter.transaction do correction.call(self) end rescue ::Parser::ClobberingError end end # rubocop:enable Lint/HandleExceptions @source_rewriter.process end