Class: Gobstones::Lang::Definition

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

Direct Known Subclasses

Function, Main, Procedure

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from EqualityDefinition

#==

Constructor Details

#initialize(name, arguments, body, return_statement) ⇒ Definition

Returns a new instance of Definition.



12
13
14
15
16
17
# File 'lib/gobstones/lang/definitions/definition.rb', line 12

def initialize(name, arguments, body, return_statement)
  @name = name
  @arguments = arguments
  @body = body
  @return_statement = return_statement
end

Instance Attribute Details

#argumentsObject (readonly)

Returns the value of attribute arguments.



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

def arguments
  @arguments
end

#bodyObject (readonly)

Returns the value of attribute body.



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

def body
  @body
end

#nameObject (readonly)

Returns the value of attribute name.



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

def name
  @name
end

#return_statementObject (readonly)

Returns the value of attribute return_statement.



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

def return_statement
  @return_statement
end

Instance Method Details

#create_context_based_on(_outer_context) ⇒ Object



36
37
38
# File 'lib/gobstones/lang/definitions/definition.rb', line 36

def create_context_based_on(_outer_context)
  subclass_responsibility
end

#definition_typeObject



40
41
42
# File 'lib/gobstones/lang/definitions/definition.rb', line 40

def definition_type
  subclass_responsibility
end

#equality_attributesObject



19
20
21
# File 'lib/gobstones/lang/definitions/definition.rb', line 19

def equality_attributes
  %i[name arguments body return_statement]
end

#evaluate(context, calling_arguments = []) ⇒ Object



27
28
29
30
31
32
33
34
# File 'lib/gobstones/lang/definitions/definition.rb', line 27

def evaluate(context, calling_arguments = [])
  check_number_of_arguments calling_arguments
  in_definition_context_based_on(context) do |definition_context|
    set_arguments calling_arguments, definition_context
    body.evaluate definition_context
    return return_statement.evaluate(definition_context)
  end
end

#named?(a_name) ⇒ Boolean

Returns:



23
24
25
# File 'lib/gobstones/lang/definitions/definition.rb', line 23

def named?(a_name)
  name == a_name
end