Class: RuboCop::Cop::Sane::ConditionalAssignmentAllowTernary

Inherits:
Base
  • Object
show all
Defined in:
lib/rubocop/cop/sane/conditional_assignment_allow_ternary.rb

Overview

This cop enforces ‘assign_inside_condition` style like `Style/ConditionalAssignment`, but allows ternary operators.

Examples:

# bad
foo = if condition
  1
else
  2
end

# bad
foo = case bar
when :a then 1
when :b then 2
end

# good - assignment inside condition
if condition
  foo = 1
else
  foo = 2
end

# good - ternary operators are allowed
foo = condition ? 1 : 2

# good - multiline ternary operators are allowed
foo = condition
  ? 1
  : 2

Constant Summary collapse

MSG =
"Move the assignment inside the `%<keyword>s` branch."
ASSIGNMENT_TYPES =
[:lvasgn, :ivasgn, :cvasgn, :gvasgn, :casgn].freeze

Instance Method Summary collapse

Instance Method Details

#on_and_asgn(node) ⇒ Object



64
65
66
# File 'lib/rubocop/cop/sane/conditional_assignment_allow_ternary.rb', line 64

def on_and_asgn(node)
  check_assignment(node)
end

#on_lvasgn(node) ⇒ Object Also known as: on_ivasgn, on_cvasgn, on_gvasgn, on_casgn



43
44
45
# File 'lib/rubocop/cop/sane/conditional_assignment_allow_ternary.rb', line 43

def on_lvasgn(node)
  check_assignment(node)
end

#on_masgn(node) ⇒ Object



52
53
54
# File 'lib/rubocop/cop/sane/conditional_assignment_allow_ternary.rb', line 52

def on_masgn(node)
  check_assignment(node)
end

#on_op_asgn(node) ⇒ Object



56
57
58
# File 'lib/rubocop/cop/sane/conditional_assignment_allow_ternary.rb', line 56

def on_op_asgn(node)
  check_assignment(node)
end

#on_or_asgn(node) ⇒ Object



60
61
62
# File 'lib/rubocop/cop/sane/conditional_assignment_allow_ternary.rb', line 60

def on_or_asgn(node)
  check_assignment(node)
end