use of org.jruby.runtime.builtin.IRubyObject in project enumerable by hraberg.
the class JRubyTest method interactingWithScala.
@SuppressWarnings("unchecked")
@Test
public void interactingWithScala() throws Exception {
Ruby ruby = Ruby.getGlobalRuntime();
ScalaInterpreter scala = ScalaTest.getScalaInterpreter();
Function2<Integer, Integer, Integer> f = (Function2<Integer, Integer, Integer>) scala.eval("(n: Long, m: Long) => n * m");
RubyProc proc = toProc(LambdaScala.toFn2(f));
assertEquals(ruby.newFixnum(6), proc.call(ruby.getThreadService().getCurrentContext(), new IRubyObject[] { ruby.newFixnum(2), ruby.newFixnum(3) }));
rb.put("block", proc);
assertEquals(120L, rb.eval("[1, 2, 3, 4, 5].inject &block"));
}
use of org.jruby.runtime.builtin.IRubyObject in project enumerable by hraberg.
the class JRubyTest method convertFnToRubyProc.
@Test
public void convertFnToRubyProc() throws ScriptException {
Ruby ruby = Ruby.getGlobalRuntime();
RubyProc proc = toProc(Lambda.λ(s, s.toUpperCase()));
assertEquals(ruby.newString("HELLO"), proc.call(ruby.getThreadService().getCurrentContext(), new IRubyObject[] { ruby.newString("hello") }));
}
use of org.jruby.runtime.builtin.IRubyObject in project enumerable by hraberg.
the class JRubyTest method interactingWithGroovy.
@Test
public void interactingWithGroovy() throws Exception {
Ruby ruby = Ruby.getGlobalRuntime();
ScriptEngine groovy = GroovyTest.getGroovyEngine();
Closure<?> closure = (Closure<?>) groovy.eval("{ n, m -> n * m }");
RubyProc proc = toProc(LambdaGroovy.toFn2(closure));
assertEquals(ruby.newFixnum(6), proc.call(ruby.getThreadService().getCurrentContext(), new IRubyObject[] { ruby.newFixnum(2), ruby.newFixnum(3) }));
rb.put("block", proc);
assertEquals(120L, rb.eval("[1, 2, 3, 4, 5].inject &block"));
}
use of org.jruby.runtime.builtin.IRubyObject in project enumerable by hraberg.
the class JRubyTest method interactingWithClojure.
@Test
public void interactingWithClojure() throws Exception {
Ruby ruby = Ruby.getGlobalRuntime();
IFn star = (IFn) ClojureTest.getClojureEngine().eval("*");
RubyProc proc = toProc(LambdaClojure.toFn2(star));
assertEquals(ruby.newFixnum(6), proc.call(ruby.getThreadService().getCurrentContext(), new IRubyObject[] { ruby.newFixnum(2), ruby.newFixnum(3) }));
rb.put("block", proc);
assertEquals(120L, rb.eval("[1, 2, 3, 4, 5].inject &block"));
}
use of org.jruby.runtime.builtin.IRubyObject in project nokogiri by sparklemotion.
the class XmlReader method from_io.
@JRubyMethod(meta = true, rest = true)
public static IRubyObject from_io(ThreadContext context, IRubyObject cls, IRubyObject[] args) {
// Only to pass the source test.
Ruby runtime = context.getRuntime();
// Not nil allowed!
if (args[0].isNil())
throw runtime.newArgumentError("io cannot be nil");
XmlReader reader = (XmlReader) NokogiriService.XML_READER_ALLOCATOR.allocate(runtime, getNokogiriClass(runtime, "Nokogiri::XML::Reader"));
reader.init(runtime);
reader.setInstanceVariable("@source", args[0]);
reader.setInstanceVariable("@errors", runtime.newArray());
IRubyObject url = context.nil;
if (args.length > 1)
url = args[1];
if (args.length > 2)
reader.setInstanceVariable("@encoding", args[2]);
Options options;
if (args.length > 3) {
options = new ParserContext.Options((Long) args[3].toJava(Long.class));
} else {
// use the default options RECOVER | NONET
options = new ParserContext.Options(2048 | 1);
}
InputStream in = new UncloseableInputStream(new IOInputStream(args[0]));
reader.setInput(context, in, url, options);
return reader;
}
Aggregations