Sha256: 5ca8c60588ed7a59b36b3969cb5a0a42056d09e1f15dcfe084cb95bee1832202
Contents?: true
Size: 1.77 KB
Versions: 2
Compression:
Stored size: 1.77 KB
Contents
module RuboCop module Cop module Style class EnumeratorInitialization < Base extend RuboCop::Cop::AutoCorrector ERROR_MSG_TO_ENUM = "#to_enum initialization needs to be wrapped" ERROR_MSG_NEW = "#new Enumerator initialization needs to be wrapped" def_node_matcher :already_wrapped, <<~PATTERN (send $(...) :new (...)) PATTERN def_node_matcher :to_enum_initialization, <<~PATTERN (send (...) :to_enum ...) PATTERN def_node_matcher :new_initialization, <<~PATTERN (send (const nil? :Enumerator) :new ...) PATTERN def_node_matcher :new_block_initialization, <<~PATTERN (block (send (const nil? :Enumerator) :new ...) ...) PATTERN def on_send(node) return if already_wrapped(node.parent)&.source == cop_config['InitializeEnumeratorWith'] return if new_block_initialization(node.parent) error = case when to_enum_initialization(node) then ERROR_MSG_TO_ENUM when new_initialization(node) then ERROR_MSG_NEW end return unless error add_offense(node, message: error) do |corrector| constant = cop_config['InitializeEnumeratorWith'] corrector.replace node, "#{constant}.new(#{node.source})" end end def on_block(node) return if already_wrapped(node.parent)&.source == cop_config['InitializeEnumeratorWith'] return unless new_block_initialization(node) add_offense(node, message: ERROR_MSG_NEW) do |corrector| constant = cop_config['InitializeEnumeratorWith'] corrector.replace node, "#{constant}.new(#{node.source})" end end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
grizzly-rb-1.1.0 | conversion/lib/cops/enumerator_initialization.rb |
grizzly-rb-1.0.0 | conversion/lib/cops/enumerator_initialization.rb |