class RuboCop::Cop::Style::RedundantArrayConstructor
Array.new(3) { ‘foo’ }
Array.new(3, ‘foo’)
[‘foo’, ‘foo’, ‘foo’]
[]
# good
Array([‘foo’, ‘foo’, ‘foo’])
Array[‘foo’, ‘foo’, ‘foo’]
Array.new([‘foo’, ‘foo’, ‘foo’])
Array([])
Array[]
Array.new([])
# bad
@example
Autocorrect replaces to array literal which is the simplest and fastest.
Checks for the instantiation of array using redundant ‘Array` constructor.
def on_send(node)
def on_send(node) return unless (array_literal = redundant_array_constructor(node)) receiver = node.receiver selector = node.loc.selector if node.method?(:new) range = receiver.source_range.join(selector) replacement = array_literal elsif node.method?(:Array) range = selector replacement = array_literal else range = receiver replacement = selector.begin.join(node.source_range.end) end register_offense(range, node, replacement) end
def register_offense(range, node, replacement)
def register_offense(range, node, replacement) add_offense(range) do |corrector| corrector.replace(node, replacement.source) end end