Class: Code::Node::CallArgument

Inherits:
Code::Node show all
Defined in:
lib/code/node/call_argument.rb

Instance Method Summary collapse

Methods inherited from Code::Node

#resolve

Constructor Details

#initialize(parsed) ⇒ CallArgument

Returns a new instance of CallArgument.



6
7
8
9
10
11
12
13
# File 'lib/code/node/call_argument.rb', line 6

def initialize(parsed)
  return if parsed.blank?

  @has_value = parsed[:value].present?
  @value = Node::Code.new(parsed.delete(:value).presence)
  @name = parsed.delete(:name).presence
  @operator = parsed.delete(:operator).presence
end

Instance Method Details

#evaluate(**args) ⇒ Object



15
16
17
18
19
20
21
22
23
# File 'lib/code/node/call_argument.rb', line 15

def evaluate(**args)
  if @name
    Object::Dictionary.new(
      name => @value&.evaluate(**args) || Object::Nothing.new
    )
  else
    @value&.evaluate(**args) || Object::Nothing.new
  end
end

#expansion?Boolean

Returns:



29
30
31
# File 'lib/code/node/call_argument.rb', line 29

def expansion?
  operator.present?
end

#keyword?Boolean

Returns:



33
34
35
# File 'lib/code/node/call_argument.rb', line 33

def keyword?
  !!@name
end

#nameObject



45
46
47
# File 'lib/code/node/call_argument.rb', line 45

def name
  Object::String.new(@name)
end

#operatorObject



25
26
27
# File 'lib/code/node/call_argument.rb', line 25

def operator
  @operator.to_s
end

#regular?Boolean

Returns:



41
42
43
# File 'lib/code/node/call_argument.rb', line 41

def regular?
  !keyword?
end

#value?Boolean

Returns:



37
38
39
# File 'lib/code/node/call_argument.rb', line 37

def value?
  !!@has_value
end