class RuboCop::Cop::Performance::TimesMap
This cop checks for .times.map calls. In most cases such calls can be replaced with an explicit array creation.
@example
@bad 9.times.map do |i| i.to_s end @good Array.new(9) do |i| i.to_s end
Constants
- MSG
Public Instance Methods
on_block(node)
click to toggle source
# File lib/rubocop/cop/performance/times_map.rb, line 28 def on_block(node) check(node) end
on_send(node)
click to toggle source
# File lib/rubocop/cop/performance/times_map.rb, line 24 def on_send(node) check(node) end
Private Instance Methods
autocorrect(node)
click to toggle source
# File lib/rubocop/cop/performance/times_map.rb, line 45 def autocorrect(node) send_node = node.send_type? ? node : node.each_descendant(:send).first receiver, _method_name, *args = *send_node count, = *receiver replacement = "Array.new(#{count.source}" "#{args.map { |arg| ", #{arg.source}" }.join})" lambda do |corrector| corrector.replace(send_node.loc.expression, replacement) end end
check(node)
click to toggle source
# File lib/rubocop/cop/performance/times_map.rb, line 34 def check(node) times_map_call(node) do |map_or_collect| add_offense(node, :expression, format(MSG, map_or_collect)) end end