class RuboCop::RSpec::AlignLetBrace
Shared behavior for aligning braces for single line lets
def adjacent_let_chunks
def adjacent_let_chunks last_line = nil single_line_lets.chunk do |node| line = node.loc.line last_line = (line if last_line.nil? || last_line + 1 == line) last_line.nil? end.map(&:last) end
def indent_for(node)
def indent_for(node) ' ' * (target_column_for(node) - let_token(node).column) end
def initialize(root, token)
def initialize(root, token) @root = root @token = token end
def let_group_for(let)
def let_group_for(let) adjacent_let_chunks.detect do |chunk| chunk.any? do |member| member == let && same_line?(member, let) end end end
def let_token(node)
def let_token(node) node.loc.public_send(token) end
def offending_tokens
def offending_tokens single_line_lets.reject do |let| target_column_for(let) == let_token(let).column end end
def single_line_lets
def single_line_lets @single_line_lets ||= root.each_node(:block).select do |node| let?(node) && node.single_line? end end
def target_column_for(let)
def target_column_for(let) let_group_for(let).map { |member| let_token(member).column }.max end