class RuboCop::Cop::Style::TernaryCorrector
Corrector
to correct conditional assignment in ternary conditions.
Public Class Methods
correct(corrector, node)
click to toggle source
# File lib/rubocop/cop/style/conditional_assignment.rb, line 509 def correct(corrector, node) corrector.replace(node, correction(node)) end
move_assignment_inside_condition(corrector, node)
click to toggle source
# File lib/rubocop/cop/style/conditional_assignment.rb, line 513 def move_assignment_inside_condition(corrector, node) *_var, rhs = *node if_branch, else_branch = extract_branches(node) assignment = assignment(node) remove_parentheses(corrector, rhs) if Util.parentheses?(rhs) corrector.remove(assignment) move_branch_inside_condition(corrector, if_branch, assignment) move_branch_inside_condition(corrector, else_branch, assignment) end
Private Class Methods
correction(node)
click to toggle source
# File lib/rubocop/cop/style/conditional_assignment.rb, line 527 def correction(node) "#{lhs(node.if_branch)}#{ternary(node)}" end
element_assignment?(node)
click to toggle source
# File lib/rubocop/cop/style/conditional_assignment.rb, line 540 def element_assignment?(node) node.send_type? && node.method_name != :[]= end
extract_branches(node)
click to toggle source
# File lib/rubocop/cop/style/conditional_assignment.rb, line 544 def extract_branches(node) *_var, rhs = *node condition, = *rhs if rhs.begin_type? && rhs.children.one? _condition, if_branch, else_branch = *(condition || rhs) [if_branch, else_branch] end
move_branch_inside_condition(corrector, branch, assignment)
click to toggle source
# File lib/rubocop/cop/style/conditional_assignment.rb, line 557 def move_branch_inside_condition(corrector, branch, assignment) corrector.insert_before(branch, assignment.source) end
remove_parentheses(corrector, node)
click to toggle source
# File lib/rubocop/cop/style/conditional_assignment.rb, line 552 def remove_parentheses(corrector, node) corrector.remove(node.loc.begin) corrector.remove(node.loc.end) end
ternary(node)
click to toggle source
# File lib/rubocop/cop/style/conditional_assignment.rb, line 531 def ternary(node) _variable, *_operator, if_rhs = *node.if_branch _else_variable, *_operator, else_rhs = *node.else_branch expr = "#{node.condition.source} ? #{if_rhs.source} : #{else_rhs.source}" element_assignment?(node.if_branch) ? "(#{expr})" : expr end