Class: EleetScript::BaseEngine

Inherits:
Object
  • Object
show all
Defined in:
lib/engine/engine.rb

Direct Known Subclasses

SharedEngine, StandaloneEngine

Instance Method Summary collapse

Constructor Details

#initializeBaseEngine

Returns a new instance of BaseEngine.



19
20
21
# File 'lib/engine/engine.rb', line 19

def initialize
  raise CannotInstantiateBaseEngine.new
end

Instance Method Details

#[](name) ⇒ Object



47
48
49
50
51
# File 'lib/engine/engine.rb', line 47

def [](name)
  load
  var, ns = unnest(name)
  to_ruby_value(ns[var])
end

#[]=(name, value, options = {}) ⇒ Object



53
54
55
56
57
58
59
60
61
# File 'lib/engine/engine.rb', line 53

def []=(name, value, options = {})
  load
  var, ns = unnest(name)
  if var[0] =~ /[A-Z]/ && ns.constants.has_key?(var)
    memory.root_namespace["Errors"].call("<", [memory.root_namespace["String"].new_with_value("Cannot reassign constant via the Engine.", memory.root_namespace)])
  else
    ns[var] = to_eleet_value(value, options)
  end
end

#call(method_name, *args) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
# File 'lib/engine/engine.rb', line 35

def call(method_name, *args)
  method_name = method_name.to_s
  if method_name =~ /\./
    raise CannotCallInstanceOrClassMethodsException.new
  end
  method_name, ns = unnest(method_name)
  eleet_args = args.map do |arg|
    to_eleet_value(arg)
  end
  to_ruby_value(ns.current_self.call(method_name, eleet_args))
end

#evaluate(code) ⇒ Object



23
24
25
26
27
28
29
# File 'lib/engine/engine.rb', line 23

def evaluate(code)
  begin
    to_ruby_value(eval(code))
  rescue Exception => e
    false
  end
end

#execute(code) ⇒ Object



31
32
33
# File 'lib/engine/engine.rb', line 31

def execute(code)
  evaluate(code)
end

#get(var, raw = false) ⇒ Object



63
64
65
66
67
68
69
70
# File 'lib/engine/engine.rb', line 63

def get(var, raw = false)
  val = self[var]
  if raw
    val.eleet_obj
  else
    val
  end
end

#memoryObject



76
77
78
# File 'lib/engine/engine.rb', line 76

def memory
  @memory ||= Memory.new
end

#set(var, value, options = {}) ⇒ Object



72
73
74
# File 'lib/engine/engine.rb', line 72

def set(var, value, options = {})
  send(:[]=, var, value, options)
end