module RipperRubyParser::SexpHandlers::Assignment

Constants

ASSIGNMENT_IN_METHOD_SUB_TYPE_MAP
ASSIGNMENT_SUB_TYPE_MAP
OPERATOR_ASSIGNMENT_MAP

Public Instance Methods

process_assign(exp) click to toggle source
# File lib/ripper_ruby_parser/sexp_handlers/assignment.rb, line 4
def process_assign exp
  _, lvalue, value = exp.shift 3
  lvalue = process(lvalue)
  value = process(value)

  case value.sexp_type
  when :splat
    value = s(:svalue, value)
  when :fake_array
    value = s(:svalue, s(:array, *value.sexp_body))
  end

  with_line_number(lvalue.line,
                   create_regular_assignment_sub_type(lvalue, value))
end
process_massign(exp) click to toggle source
# File lib/ripper_ruby_parser/sexp_handlers/assignment.rb, line 20
def process_massign exp
  _, left, right = exp.shift 3

  left = handle_potentially_typeless_sexp left

  if left.first == :masgn
    left = left[1]
    left.shift
  end

  left = create_multiple_assignment_sub_types left

  right = process(right)

  case right.sexp_type
  when :fake_array
    right[0] = :array
  when :splat
    # Do nothing
  else
    right = s(:to_ary, right)
  end

  s(:masgn, s(:array, *left), right)
end
process_mlhs_add_star(exp) click to toggle source
# File lib/ripper_ruby_parser/sexp_handlers/assignment.rb, line 63
def process_mlhs_add_star exp
  generic_add_star exp
end
process_mlhs_paren(exp) click to toggle source
# File lib/ripper_ruby_parser/sexp_handlers/assignment.rb, line 67
def process_mlhs_paren exp
  _, contents = exp.shift 2

  items = handle_potentially_typeless_sexp(contents)

  return items if items.first.is_a? Symbol

  s(:masgn, s(:array, *create_multiple_assignment_sub_types(items)))
end
process_mrhs_add_star(exp) click to toggle source
# File lib/ripper_ruby_parser/sexp_handlers/assignment.rb, line 53
def process_mrhs_add_star exp
  exp = generic_add_star exp

  if exp.first.is_a? Symbol
    exp
  else
    exp.first
  end
end
process_mrhs_new_from_args(exp) click to toggle source
# File lib/ripper_ruby_parser/sexp_handlers/assignment.rb, line 46
def process_mrhs_new_from_args exp
  _, inner, last = exp.shift 3
  inner.map! {|item| process(item)}
  inner.push process(last) unless last.nil?
  s(:fake_array, *inner)
end
process_opassign(exp) click to toggle source
# File lib/ripper_ruby_parser/sexp_handlers/assignment.rb, line 77
def process_opassign exp
  _, lvalue, operator, value = exp.shift 4

  lvalue = process(lvalue)
  value = process(value)
  operator = operator[1].gsub(/=/, '').to_sym

  create_operator_assignment_sub_type lvalue, value, operator
end