module EleetScript::Values
Public Class Methods
to_eleet_value(ruby_obj, engine, options = {})
click to toggle source
# File lib/engine/values.rb, line 12 def to_eleet_value(ruby_obj, engine, options = {}) memory = if engine.kind_of?(Memory) engine else engine.memory end if ruby_obj.kind_of?(EleetToRubyWrapper) ruby_obj.instance_variable_get("@eleet_obj") elsif ruby_obj.kind_of?(String) memory.root_namespace["String"].new_with_value(ruby_obj, memory.root_namespace) elsif ruby_obj.kind_of?(Symbol) memory.root_namespace["Symbol"].new_with_value(ruby_obj, memory.root_namespace) elsif ruby_obj.kind_of?(Fixnum) memory.root_namespace["Integer"].new_with_value(ruby_obj, memory.root_namespace) elsif ruby_obj.kind_of?(Float) memory.root_namespace["Float"].new_with_value(ruby_obj, memory.root_namespace) elsif ruby_obj.kind_of?(BigDecimal) memory.root_namespace["Integer"].new_with_value(ruby_obj.to_i, memory.root_namespace) elsif ruby_obj.kind_of?(Proc) memory.root_namespace["Lambda"].new_with_value(ESProc.new(ruby_obj, engine), memory.root_namespace) elsif ruby_obj.kind_of?(RubyLambda) ruby_obj.es_lambda elsif ruby_obj.kind_of?(Regexp) memory.root_namespace["Regex"].new_with_value(ESRegex.from_regex(ruby_obj), memory.root_namespace) elsif ruby_obj.kind_of?(ESRegex) memory.root_namespace["Regex"].new_with_value(ruby_obj, memory.root_namespace) elsif ruby_obj.nil? memory.root_namespace["nil"] elsif ruby_obj == true memory.root_namespace["true"] elsif ruby_obj == false memory.root_namespace["false"] else RubyToEleetWrapper.new(ruby_obj, engine, options) end end
to_ruby_value(eleet_obj, engine)
click to toggle source
# File lib/engine/values.rb, line 49 def to_ruby_value(eleet_obj, engine) if eleet_obj.kind_of?(RubyToEleetWrapper) eleet_obj.instance_variable_get("@ruby_obj") elsif eleet_obj.respond_to?(:class_name) case eleet_obj.class_name when 'Lambda' if eleet_obj.ruby_value.is_a?(ESProc) eleet_obj.ruby_value.proc else proc = RubyLambda.new do |*args| eleet_args = args.map do |arg| to_eleet_value(arg, engine) end to_ruby_value(eleet_obj.call(:call, eleet_args), engine) end proc.es_lambda = eleet_obj proc end when 'TrueClass' true when 'FalseClass' false when 'NilClass' nil when 'String', 'Integer', 'Float', 'Regex', 'Symbol' eleet_obj.ruby_value else EleetToRubyWrapper.new(eleet_obj, engine) end else # Probably already is a ruby value eleet_obj end end