Sha256: 1d6368d696a5a362dcfdffb9187c30e69fc078bc5072c75ccfb6118f681af678
Contents?: true
Size: 1.66 KB
Versions: 1
Compression:
Stored size: 1.66 KB
Contents
package com.gsamokovarov.bindex; import org.jruby.Ruby; import org.jruby.RubyArray; import org.jruby.RubyModule; import org.jruby.RubyClass; import org.jruby.runtime.ThreadContext; import org.jruby.runtime.builtin.IRubyObject; import org.jruby.runtime.builtin.InstanceVariables; import org.jruby.anno.JRubyMethod; public class JRubyIntegration { public static void setup(Ruby runtime) { RubyModule bindex = runtime.defineModule("Bindex"); bindex.defineAnnotatedMethods(BindexMethods.class); RubyClass exception = runtime.getException(); exception.defineAnnotatedMethods(ExceptionExtensionMethods.class); IRubyObject verbose = runtime.getVerbose(); try { runtime.setVerbose(runtime.getNil()); runtime.addEventHook(new SetExceptionBindingsEventHook()); } finally { runtime.setVerbose(verbose); } } private static class BindexMethods { @JRubyMethod(name = "current_bindings", meta = true) public static IRubyObject currentBindings(ThreadContext context, IRubyObject self) { return RubyBindingsCollector.collectCurrentFor(context); } } private static class ExceptionExtensionMethods { @JRubyMethod public static IRubyObject bindings(ThreadContext context, IRubyObject self) { InstanceVariables instanceVariables = self.getInstanceVariables(); IRubyObject bindings = instanceVariables.getInstanceVariable("@bindings"); if (bindings != null && !bindings.isNil()) { return bindings; } return RubyArray.newArray(context.getRuntime()); } } }
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
bindex-0.2.0 | ext/bindex/com/gsamokovarov/bindex/JRubyIntegration.java |