class RuboCop::Cop::Lint::DuplicateCaseCondition
This cop checks that there are no repeated conditions used in case 'when' expressions.
@example
# bad case x when 'first' do_something when 'first' do_something_else end
@example
# good case x when 'first' do_something when 'second' do_something_else end
Constants
- MSG
Public Instance Methods
on_case(case_node)
click to toggle source
# File lib/rubocop/cop/lint/duplicate_case_condition.rb, line 33 def on_case(case_node) case_node.when_branches.each_with_object([]) do |when_node, previous| when_node.each_condition do |condition| next unless repeated_condition?(previous, condition) add_offense(condition) end previous.push(when_node.conditions) end end
Private Instance Methods
repeated_condition?(previous, condition)
click to toggle source
# File lib/rubocop/cop/lint/duplicate_case_condition.rb, line 47 def repeated_condition?(previous, condition) previous.any? { |c| c.include?(condition) } end