class RuboCop::Cop::Style::InPatternThen
Checks for `in;` uses in `case` expressions.
@example
# bad case expression in pattern_a; foo in pattern_b; bar end # good case expression in pattern_a then foo in pattern_b then bar end
Constants
- MSG
Public Instance Methods
on_in_pattern(node)
click to toggle source
# File lib/rubocop/cop/style/in_pattern_then.rb, line 29 def on_in_pattern(node) return if node.multiline? || node.then? || !node.body pattern = node.pattern pattern_source = if pattern.match_alt_type? alternative_pattern_source(pattern) else pattern.source end add_offense(node.loc.begin, message: format(MSG, pattern: pattern_source)) do |corrector| corrector.replace(node.loc.begin, ' then') end end
Private Instance Methods
alternative_pattern_source(pattern)
click to toggle source
# File lib/rubocop/cop/style/in_pattern_then.rb, line 46 def alternative_pattern_source(pattern) return pattern.children.map(&:source) unless pattern.children.first.match_alt_type? pattern_sources = alternative_pattern_source(pattern.children.first) (pattern_sources << pattern.children[1].source).join(' | ') end