class RuboCop::Cop::RSpec::FactoryBot::CreateList::CreateListCorrector
:nodoc:
def build_arguments(node, count)
def build_arguments(node, count) factory, *options = *node.send_node.arguments arguments = ":#{factory.value}, #{count}" options = build_options_string(options) arguments += ", #{options}" unless options.empty? arguments end
def call(corrector)
def call(corrector) replacement = if node.body.block_type? call_with_block_replacement(node) else call_replacement(node) end corrector.replace(node, replacement) end
def call_replacement(node)
def call_replacement(node) block = node.body factory, *options = *block.arguments arguments = "#{factory.source}, #{node.receiver.source}" options = build_options_string(options) arguments += ", #{options}" unless options.empty? replacement = format_receiver(block.receiver) replacement += format_method_call(block, 'create_list', arguments) replacement end
def call_with_block_replacement(node)
def call_with_block_replacement(node) block = node.body arguments = build_arguments(block, node.receiver.source) replacement = format_receiver(block.receiver) replacement += format_method_call(block, 'create_list', arguments) replacement += format_block(block) replacement end
def format_block(node)
def format_block(node) if node.body.begin_type? format_multiline_block(node) else format_singeline_block(node) end end
def format_multiline_block(node)
def format_multiline_block(node) indent = ' ' * node.body.loc.column indent_end = ' ' * node.parent.loc.column " do #{node.arguments.source}\n" \ "#{indent}#{node.body.source}\n" \ "#{indent_end}end" end
def format_singeline_block(node)
def format_singeline_block(node) " { #{node.arguments.source} #{node.body.source} }" end
def initialize(node)
def initialize(node) @node = node.parent end