diff --git a/README b/README index fede170..86468cc 100644 --- a/README +++ b/README @@ -1,11 +1,14 @@ -java-inline is a plugin for RubyInline that adds JVM language support. See the examples dir for a simple example of using it. +java-inline is a plugin for RubyInline that adds JVM language support. See the examples dir for simple examples of using it. -java-inline adds support for Java +'java_inline' adds support for Java. + +'scala_inline' adds support for Scala. + +'mirah_inline' adds support for Mirah, requires the 'mirah' gem installed. -scala-inline adds support for Scala. Running example -------------------- +--------------- gem install RubyInline @@ -13,3 +16,4 @@ and to run the example cd examples jruby fastmath.rb jruby -J-Dscala.home= scalamath.rb + diff --git a/examples/mirahmath.rb b/examples/mirahmath.rb index b5b815a..95e452a 100644 --- a/examples/mirahmath.rb +++ b/examples/mirahmath.rb @@ -20,7 +20,7 @@ def fib_ruby(n) inline :Mirah do |builder| builder.mirah " - def factorial_mirah(max:int) + def factorial_mirah(max:int):int i = max result = 1 while i >= 2; result *= i-=1; end @@ -29,7 +29,7 @@ def factorial_mirah(max:int) " builder.mirah " - def fib_mirah(n:int) + def fib_mirah(n:int):int if n < 2 n else diff --git a/lib/java_inline.rb b/lib/java_inline.rb index 7ee38c6..e2c62e4 100644 --- a/lib/java_inline.rb +++ b/lib/java_inline.rb @@ -1,7 +1,13 @@ +require 'fileutils' require 'rubygems' require 'inline' require 'java' +# make sure the inline cache dir exists +unless File.exists?(Inline.directory) + FileUtils.mkdir_p(Inline.directory) +end + # Add the inline cache dir to CLASSPATH $CLASSPATH << Inline.directory diff --git a/lib/mirah_inline.rb b/lib/mirah_inline.rb index 0a3167c..0d1aed8 100644 --- a/lib/mirah_inline.rb +++ b/lib/mirah_inline.rb @@ -1,8 +1,14 @@ +require 'fileutils' require 'rubygems' require 'inline' require 'java' require 'mirah' +# make sure the inline cache dir exists +unless File.exists?(Inline.directory) + FileUtils.mkdir_p(Inline.directory) +end + # Add the inline cache dir to CLASSPATH $CLASSPATH << Inline.directory @@ -36,7 +42,7 @@ def import(cls) # Add a Java method to the built Java source. This expects the method to # be public and static, so it can be called as a function. - def duby(src) + def mirah(src) @src << src << "\n" signature = src.match(/def ([a-zA-Z0-9_]+)\((.*)\)/) raise "Could not parse method signature" unless signature @@ -55,7 +61,7 @@ class #{@name} end " - File.open(filename, "w") {|file| file.write(full_src)} + File.open("#{Inline.directory}/#{filename}", "w") {|file| file.write(full_src)} Dir.chdir(Inline.directory) do ::Mirah.compile(filename) end diff --git a/lib/scala_inline.rb b/lib/scala_inline.rb index 6cec5e1..845c172 100644 --- a/lib/scala_inline.rb +++ b/lib/scala_inline.rb @@ -1,8 +1,14 @@ +require 'fileutils' require 'rubygems' require 'inline' require 'java' include_class Java::java.lang.System +# make sure the inline cache dir exists +unless File.exists?(Inline.directory) + FileUtils.mkdir_p(Inline.directory) +end + # Add the inline cache dir to CLASSPATH $CLASSPATH << Inline.directory $CLASSPATH << "#{System.getProperty('scala.home')}/lib/scala-compiler.jar"