Sorry, again. The attachment doesn't show up, so I put the patch in
this message.

--- src/org/jruby/javasupport/.svn/text-base/JavaEmbedUtils.java.svn-base       
2007-10-29
13:40:19.000000000 -0400
+++ src/org/jruby/javasupport/JavaEmbedUtils.java       2007-10-29
16:11:43.000000000 -0400
@@ -28,10 +28,18 @@ package org.jruby.javasupport;
  * the terms of any one of the CPL, the GPL or the LGPL.
  ***** END LICENSE BLOCK *****/

+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.Reader;
 import java.util.List;

 import org.jruby.Ruby;
+import org.jruby.ast.Node;
 import org.jruby.runtime.Block;
+import org.jruby.runtime.DynamicScope;
 import org.jruby.runtime.ThreadContext;
 import org.jruby.runtime.builtin.IRubyObject;

@@ -146,4 +154,46 @@ public class JavaEmbedUtils {
     public static IRubyObject javaToRuby(Ruby runtime, short value) {
         return javaToRuby(runtime, new Short(value));
     }
+
+    public static Node parse(Ruby runtime, String script) {
+        return parse(runtime, script, "<script>",
runtime.getCurrentContext().getCurrentScope());
+    }
+    public static Node parse(Ruby runtime, String script, String filename) {
+        return parse(runtime, script, filename,
runtime.getCurrentContext().getCurrentScope());
+    }
+    public static Node parse(Ruby runtime, String script, String
filename, DynamicScope scope) {
+        return runtime.parseEval(script, filename, scope, 0);
+    }
+    public static Node parse(Ruby runtime, Reader reader) throws IOException {
+        String script = getScriptFromReader(reader);
+        return parse(runtime, script, "<script>",
runtime.getCurrentContext().getCurrentScope());
+    }
+    public static Node parse(Ruby runtime, Reader reader, String
filename) throws IOException {
+        if (filename == null) return parse(runtime, reader);
+        return parse(runtime, reader, filename,
runtime.getCurrentContext().getCurrentScope());
+    }
+    public static Node parse(Ruby runtime, Reader reader, String
filename, DynamicScope scope) throws IOException {
+        if (filename == null) return parse(runtime, reader);
+        InputStream iStream = getInputStreamFromFile(filename);
+        return runtime.parseFile(iStream, filename, scope);
+    }
+
+    private static String getScriptFromReader(Reader reader) throws
IOException {
+        StringBuffer sb = new StringBuffer();
+        char[] cbuf;
+        while (true) {
+            cbuf = new char[256];
+            int chars = reader.read(cbuf);
+            if (chars < 0) {
+                break;
+            }
+            sb.append(cbuf);
+        }
+        cbuf = null;
+        return new String(sb);
+    }
+
+    private static InputStream getInputStreamFromFile(String
filename) throws FileNotFoundException {
+        return new FileInputStream(new File(filename));
+    }
 }


-Yoko

---------------------------------------------------------------------
To unsubscribe from this list please visit:

    http://xircles.codehaus.org/manage_email

Reply via email to