2009-12-13 13:04:50 -05:00
|
|
|
#!/opt/local/bin/ruby
|
2009-12-07 16:36:40 +02:00
|
|
|
`make all`
|
2009-12-07 16:06:06 +02:00
|
|
|
require 'v8';
|
|
|
|
|
|
|
|
#manually run a script
|
|
|
|
result = V8::C::Context.new.open do |cxt|
|
|
|
|
v8_str = V8::C::String.new('1 + 1')
|
|
|
|
v8_script = V8::C::Script.new(v8_str)
|
|
|
|
v8_script.Run()
|
|
|
|
end
|
|
|
|
|
|
|
|
puts "result: #{result}"
|
|
|
|
|
|
|
|
|
|
|
|
#define eval() purely in ruby
|
|
|
|
class V8::C::Context
|
|
|
|
def eval(javascript)
|
|
|
|
self.open do
|
|
|
|
source = V8::C::String.new(javascript)
|
|
|
|
script = V8::C::Script.new(source)
|
|
|
|
script.Run()
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2009-12-13 11:07:34 -05:00
|
|
|
f = V8::C::FunctionTemplate.new do | foo, bar |
|
|
|
|
"Hello!! This is ruby code #{foo} #{bar}!!!!"
|
2009-12-11 19:11:05 +02:00
|
|
|
end
|
|
|
|
|
2009-12-13 11:07:34 -05:00
|
|
|
plus = V8::C::FunctionTemplate.new do |a, b|
|
|
|
|
a + b
|
|
|
|
end
|
2009-12-11 19:11:05 +02:00
|
|
|
|
|
|
|
o = V8::C::ObjectTemplate.new
|
|
|
|
o.Set("hello", f)
|
2009-12-13 11:07:34 -05:00
|
|
|
o.Set("plus_of_awesomeness", plus)
|
2009-12-11 19:11:05 +02:00
|
|
|
V8::C::Context.new(o).open do |cxt|
|
2009-12-13 11:07:34 -05:00
|
|
|
puts "r1: " + cxt.eval('plus_of_awesomeness(8, 3.4)').to_s
|
|
|
|
puts "r2: " + cxt.eval('hello("Fred", "Wilma")')
|
2009-12-13 17:08:55 +02:00
|
|
|
end
|
2009-12-07 16:06:06 +02:00
|
|
|
|
|
|
|
|
|
|
|
|