class RuboCop::Cop::Style::RescueModifier

This cop checks for uses of rescue in its modifier form.

Constants

MSG

Public Instance Methods

autocorrect(node) click to toggle source
# File lib/rubocop/cop/style/rescue_modifier.rb, line 24
def autocorrect(node)
  operation, rescue_modifier, = *node
  *_, rescue_args = *rescue_modifier

  indent = indentation(node)
  correction =
    "begin\n"              "#{operation.source.gsub(/^/, indent)}"              "\n#{offset(node)}rescue\n"              "#{rescue_args.source.gsub(/^/, indent)}"              "\n#{offset(node)}end"

  lambda do |corrector|
    corrector.replace(node.source_range, correction)
  end
end
investigate(processed_source) click to toggle source
# File lib/rubocop/cop/style/rescue_modifier.rb, line 12
def investigate(processed_source)
  @modifier_locations = processed_source
                        .tokens
                        .select { |t| t.type == :kRESCUE_MOD }
                        .map(&:pos)
end
on_resbody(node) click to toggle source
# File lib/rubocop/cop/style/rescue_modifier.rb, line 19
def on_resbody(node)
  return unless modifier?(node)
  add_offense(node.parent, :expression)
end

Private Instance Methods

modifier?(node) click to toggle source
# File lib/rubocop/cop/style/rescue_modifier.rb, line 43
def modifier?(node)
  @modifier_locations.include?(node.loc.keyword)
end