Friday, March 30, 2007

Can Your Ruby Do This?

# scripting.rb

include Scriptable

x = 'Hello'
y = 'world'

groovy <<G
def z = 'multilanguage'
println("${x}, ${z} ${y}")
G


javascript <<JS
z = 'multilanguage'
println(x + ', ' + z + ' ' + y)
JS


# both => "Hello, multilanguage world!"

7 comments:

  1. Cool! Do values go the other way, too? (e.g. JS to JRuby) And what types are supported?

    ReplyDelete
  2. The values only go one way, a bit like variables declared in a block are only visible within that block. So you could think of these script sections as being a call to a groovy block or a javascript block.

    I think it could be possible to have the results come back out into the *same* variables though...hmmm.

    ReplyDelete
  3. I assume this is using the Java 6 scripting API?

    ReplyDelete
  4. Really nice. But if it could go both ways it would be awesome.

    ReplyDelete
  5. You can improve the Groovy example with:
    println "$x, $y $z"

    ReplyDelete
  6. now this is really really amazing!

    ReplyDelete