class RuboCop::Cop::Style::ParenthesesAroundCondition
end
y > 10)
if (x > 10 &&
# good
@example AllowInMultilineConditions: true
end
y > 10
if x > 10 &&
# good
end
y > 10)
if (x > 10 &&
# bad
@example AllowInMultilineConditions: false (default)
foo unless (bar = baz)
# bad
@example AllowSafeAssignment: false
foo unless (bar = baz)
# good
@example AllowSafeAssignment: true (default)
end
elsif x < 3
if x > 10
foo unless bar || baz
x += 1 while x < 10
# good
end
elsif (x < 3)
if (x > 10)
foo unless (bar || baz)
x += 1 while (x < 10)
# bad
@example
as a condition. It’s not a mistake.“
an assignment to indicate ”I know I’m using an assignment
By safe assignment we mean putting parentheses around
`AllowSafeAssignment` option for safe assignment.
condition of if/unless/while/until.
This cop checks for the presence of superfluous parentheses around the
def allow_multiline_conditions?
def allow_multiline_conditions? cop_config['AllowInMultilineConditions'] end
def message(node)
def message(node) kw = node.parent.keyword article = kw == 'while' ? 'a' : 'an' "Don't use parentheses around the condition of #{article} `#{kw}`." end
def modifier_op?(node)
def modifier_op?(node) return false if node.if_type? && node.ternary? return true if node.rescue_type? node.basic_conditional? && node.modifier_form? end
def on_if(node)
def on_if(node) return if node.ternary? process_control_op(node) end
def on_while(node)
def on_while(node) process_control_op(node) end
def parens_allowed?(node)
def parens_allowed?(node) parens_required?(node) || (safe_assignment?(node) && safe_assignment_allowed?) || (node.multiline? && allow_multiline_conditions?) end
def process_control_op(node)
def process_control_op(node) cond = node.condition control_op_condition(cond) do |first_child| return if modifier_op?(first_child) return if parens_allowed?(cond) message = message(cond) add_offense(cond, message: message) do |corrector| ParenthesesCorrector.correct(corrector, cond) end end end