Sha256: 5aaa9ce5f6a62270c6672a797b4e709bb0bc47f8b921267a12782326def30830
Contents?: true
Size: 1.44 KB
Versions: 1
Compression:
Stored size: 1.44 KB
Contents
module PAC module Runtimes class MustangRuntime class Context def initialize(source = "") source = source.encode("UTF-8") if source.respond_to?(:encode) @v8_context = ::Mustang::Context.new @v8_context.eval(source) end def include(mod) (mod.methods - Module.methods).each do |name| @v8_context[name] = mod.method(name) end end def call(properties, *args) unbox @v8_context.eval(properties).call(*args) rescue NoMethodError => e raise ProgramError, e.message end def unbox(value) case value when ::Mustang::V8::Array value.map { |v| unbox(v) } when ::Mustang::V8::Boolean value.to_bool when ::Mustang::V8::NullClass, ::Mustang::V8::UndefinedClass nil when ::Mustang::V8::Function nil when ::Mustang::V8::SyntaxError raise RuntimeError, value.message when ::Mustang::V8::Error raise ProgramError, value.message else value.respond_to?(:delegate) ? value.delegate : value end end end def name "Mustang (V8)" end def compile(source) Context.new(source) end def available? require "mustang" true rescue LoadError false end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
pac-1.0.0 | lib/pac/runtimes/mustang.rb |