1
0
Fork 0
mirror of https://github.com/rubyjs/therubyracer synced 2023-03-27 23:21:42 -04:00
therubyracer/spike.rb

44 lines
854 B
Ruby
Raw Normal View History

2009-12-13 13:04:50 -05:00
#!/opt/local/bin/ruby
`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}!!!!"
end
2009-12-13 11:07:34 -05:00
plus = V8::C::FunctionTemplate.new do |a, b|
a + b
end
o = V8::C::ObjectTemplate.new
o.Set("hello", f)
2009-12-13 11:07:34 -05:00
o.Set("plus_of_awesomeness", plus)
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")')
end
2009-12-07 16:06:06 +02:00