class RuboCop::Cop::RSpec::HashInBlockStyle

@example

# bad
let(:foo) { { baz: true } }

# good
let(:foo) { Hash[baz: true] }

Constants

MSG

Public Instance Methods

autocorrect(node) click to toggle source
# File lib/rubocop/cop/rspec/hash_in_block_style.rb, line 29
def autocorrect(node)
  left = tokens(node).find(&:left_brace?)
  right = tokens(node).select(&:right_curly_brace?).last
  lambda do |corrector|
    corrector.replace(left.pos, 'Hash[')
    corrector.replace(right.pos, ']')
  end
end
on_block(node) click to toggle source
# File lib/rubocop/cop/rspec/hash_in_block_style.rb, line 19
def on_block(node)
  return unless %i[let let_it_be].include?(node.send_node.method_name)
  return unless inline_block?(node)

  hash = node.children.last
  return unless hash.is_a?(RuboCop::AST::HashNode)

  add_offense(hash, location: :expression)
end

Private Instance Methods

inline_block?(node) click to toggle source
# File lib/rubocop/cop/rspec/hash_in_block_style.rb, line 40
def inline_block?(node)
  tokens = processed_source.tokens
  end_index = index_of_last_token(node)
  tokens[end_index].right_curly_brace?
end