class V8::Context
def self.eval(source)
def self.eval(source) new.eval(source) end
def [](key)
def [](key) @scope[key] end
def []=(key, value)
def []=(key, value) @scope[key] = value end
def eval(javascript, filename = "<eval>", line = 1)
def eval(javascript, filename = "<eval>", line = 1) if IO === javascript || StringIO === javascript javascript = javascript.read() end err = nil value = nil C::TryCatch.try do |try| @native.enter do script = C::Script::Compile(To.v8(javascript.to_s), To.v8(filename.to_s)) if try.HasCaught() err = JavascriptError.new(try) else result = script.Run() if try.HasCaught() err = JavascriptError.new(try) else value = To.ruby(result) end end end end raise err if err return value end
def evaluate(*args)
def evaluate(*args) self.eval(*args) end
def initialize(opts = {})
def initialize(opts = {}) @native = C::Context::New(opts[:with]) @scope = V8::Object.new(@native.Global(), @native) yield(self) if block_given? end
def load(filename)
def load(filename) File.open(filename) do |file| evaluate file, filename, 1 end end