Class: Gobstones::Lang::ReturnFromFunction

Inherits:
Object
  • Object
show all
Includes:
EqualityDefinition
Defined in:
lib/gobstones/lang/definitions/return_from_function.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from EqualityDefinition

#==

Constructor Details

#initialize(expressions) ⇒ ReturnFromFunction

Returns a new instance of ReturnFromFunction.



10
11
12
# File 'lib/gobstones/lang/definitions/return_from_function.rb', line 10

def initialize(expressions)
  @expressions = expressions
end

Instance Attribute Details

#expressionsObject (readonly)

Returns the value of attribute expressions.



8
9
10
# File 'lib/gobstones/lang/definitions/return_from_function.rb', line 8

def expressions
  @expressions
end

Instance Method Details

#equality_attributesObject



14
15
16
# File 'lib/gobstones/lang/definitions/return_from_function.rb', line 14

def equality_attributes
  %i[expressions]
end

#evaluate(context) ⇒ Object



18
19
20
21
22
# File 'lib/gobstones/lang/definitions/return_from_function.rb', line 18

def evaluate(context)
  # TODO think more the case of gexp tuple, should it be a data type instead of a plain list?
  evaluated_expressions = expressions.map { |expression| expression.evaluate(context) }
  evaluated_expressions.size == 1 ? evaluated_expressions.first : evaluated_expressions
end