Sha256: 21383dfb1cbd7ff2c787a200d1503234d3c4deef62845c02686130f71c1f3c1b
Contents?: true
Size: 1.83 KB
Versions: 2
Compression:
Stored size: 1.83 KB
Contents
# frozen_string_literal: true module RuboCop module Cop module Style # Enforces the use of consistent method names # `Object#yield_self` or `Object#then`. # # @example EnforcedStyle: then (default) # # # bad # obj.yield_self { |x| x.do_something } # # # good # obj.then { |x| x.do_something } # # @example EnforcedStyle: yield_self # # # bad # obj.then { |x| x.do_something } # # # good # obj.yield_self { |x| x.do_something } # class ObjectThen < Base include ConfigurableEnforcedStyle extend AutoCorrector extend TargetRubyVersion minimum_target_ruby_version 2.6 MSG = 'Prefer `%<prefer>s` over `%<current>s`.' RESTRICT_ON_SEND = %i[then yield_self].freeze def on_block(node) check_method_node(node.send_node) end alias on_numblock on_block def on_send(node) return unless node.arguments.one? && node.first_argument.block_pass_type? check_method_node(node) end private def check_method_node(node) return unless preferred_method?(node) message = message(node) add_offense(node.loc.selector, message: message) do |corrector| prefer = style == :then && node.receiver.nil? ? 'self.then' : style corrector.replace(node.loc.selector, prefer) end end def preferred_method?(node) case style when :then node.method?(:yield_self) when :yield_self node.method?(:then) else false end end def message(node) format(MSG, prefer: style.to_s, current: node.method_name) end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
rubocop-1.69.2 | lib/rubocop/cop/style/object_then.rb |
rubocop-1.69.1 | lib/rubocop/cop/style/object_then.rb |