class RuboCop::Cop::Style::TernaryCorrector

Corrector to correct conditional assignment in ternary conditions.

Public Class Methods

correct(node) click to toggle source
# File lib/rubocop/cop/style/conditional_assignment.rb, line 420
def correct(node)
  condition, if_branch, else_branch = *node
  _variable, *_operator, if_rhs = *if_branch
  _else_variable, *_operator, else_rhs = *else_branch
  condition = condition.source
  if_rhs = if_rhs.source
  else_rhs = else_rhs.source

  ternary = "#{condition} ? #{if_rhs} : #{else_rhs}"
  if if_branch.send_type? && if_branch.method_name != :[]=
    ternary = "(#{ternary})"
  end
  correction = "#{lhs(if_branch)}#{ternary}"

  lambda do |corrector|
    corrector.replace(node.source_range, correction)
  end
end
move_assignment_inside_condition(node) click to toggle source
# File lib/rubocop/cop/style/conditional_assignment.rb, line 439
def move_assignment_inside_condition(node)
  *_var, rhs = *node
  condition, = *rhs if rhs.begin_type? && rhs.children.size == 1
  assignment = assignment(node)
  _condition, if_branch, else_branch = *(condition || rhs)

  lambda do |corrector|
    corrector.remove(assignment)
    if rhs.begin_type?
      corrector.remove(rhs.loc.begin)
      corrector.remove(rhs.loc.end)
    end
    corrector.insert_before(if_branch.loc.expression,
                            assignment.source)
    corrector.insert_before(else_branch.loc.expression,
                            assignment.source)
  end
end