Class: Gloo::Verbs::Invoke

Inherits:
Core::Verb show all
Defined in:
lib/gloo/verbs/invoke.rb

Constant Summary collapse

KEYWORD =
'invoke'.freeze
KEYWORD_SHORT =
'~>'.freeze

Constants inherited from Core::Baseo

Core::Baseo::NOT_IMPLEMENTED_ERR

Instance Attribute Summary

Attributes inherited from Core::Verb

#params, #tokens

Attributes inherited from Core::Baseo

#name

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Core::Verb

#display_value, help, inherited, #initialize, #type_display

Methods inherited from Core::Baseo

#initialize, #type_display

Constructor Details

This class inherits a constructor from Gloo::Core::Verb

Class Method Details

.keywordObject

Get the Verb’s keyword.



41
42
43
# File 'lib/gloo/verbs/invoke.rb', line 41

def self.keyword
  return KEYWORD
end

.keyword_shortcutObject

Get the Verb’s keyword shortcut.



48
49
50
# File 'lib/gloo/verbs/invoke.rb', line 48

def self.keyword_shortcut
  return KEYWORD_SHORT
end

Instance Method Details

#runObject

Run the verb.



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/gloo/verbs/invoke.rb', line 17

def run
  if @tokens.token_count > 1
    ob = @tokens.first

    # Get the function object
    pn = Gloo::Core::Pn.new( @engine, @tokens.second ) 
    func = pn.resolve

    # Is the object a function?
    if func&.is_function?
      params = get_params_arr
    
      @engine.log.debug "invoking function: #{func.pn}"
      result = func.invoke( params ) 
      @engine.log.debug "function returned: #{result}"
      @engine.heap.it.set_to result
      return result
    end
  end
end