Class: RubyLint::MethodCall::AssignMember

Inherits:
Base
  • Object
show all
Defined in:
lib/ruby-lint/method_call/assign_member.rb

Overview

The AssignMember class is used for evaluating object member assignments. This includes the following types of assignments:

  • Array index assignments
  • Hash key assignments

Instance Attribute Summary

Attributes inherited from Base

#node, #vm

Instance Method Summary collapse

Methods inherited from Base

#initialize

Constructor Details

This class inherits a constructor from RubyLint::MethodCall::Base

Instance Method Details

#create_member(name, value) ⇒ RubyLint::Definition::RubyObject (private)

Parameters:

Returns:



34
35
36
37
38
39
40
# File 'lib/ruby-lint/method_call/assign_member.rb', line 34

def create_member(name, value)
  return Definition::RubyObject.new(
    :name  => name,
    :type  => :member,
    :value => value
  )
end

#evaluate(arguments, context, block = nil) ⇒ Object

See Also:



14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/ruby-lint/method_call/assign_member.rb', line 14

def evaluate(arguments, context, block = nil)
  return if context.frozen?

  *members, values = arguments
  member_values    = prepare_values(values)

  members.each do |member|
    member = create_member(member.value.to_s, member_values.shift)

    context.add_definition(member)
  end
end

#prepare_values(values) ⇒ Array (private)

Parameters:

  • values (Array)

Returns:

  • (Array)


46
47
48
49
50
51
52
53
54
# File 'lib/ruby-lint/method_call/assign_member.rb', line 46

def prepare_values(values)
  if values and values.array?
    member_values = values.list(:member).map(&:value)
  elsif values
    member_values = [values]
  end

  return member_values
end