class Halunke::Runtime::HFunction

Public Class Methods

new(signature, fn) click to toggle source
# File lib/halunke/runtime/hfunction.rb, line 6
def initialize(signature, fn)
  @signature = signature
  @fn = fn
end

Public Instance Methods

inspect(_context) click to toggle source
# File lib/halunke/runtime/hfunction.rb, line 24
def inspect(_context)
  "Function (#{@signature.length})"
end
receive_message(parent_context, message_name, message_value, source_code_position: NullSourceCodePosition.new) click to toggle source
# File lib/halunke/runtime/hfunction.rb, line 11
def receive_message(parent_context, message_name, message_value, source_code_position: NullSourceCodePosition.new)
  raise HUnknownMessage.new(self.inspect(parent_context), message_name, ["call"], source_code_position) unless message_name == "call"

  context = parent_context.create_child
  args = message_value[0].ruby_value

  @signature.zip(args).each do |name, value|
    context[name.to_s] = value
  end

  @fn.call(context)
end