本文整理汇总了Java中org.jruby.RubyModule类的典型用法代码示例。如果您正苦于以下问题:Java RubyModule类的具体用法?Java RubyModule怎么用?Java RubyModule使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
RubyModule类属于org.jruby包,在下文中一共展示了RubyModule类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: hookIntoRuntime
import org.jruby.RubyModule; //导入依赖的package包/类
/**
* Hooks this <code>TextAreaReadline</code> instance into the runtime,
* redefining the <code>Readline</code> module so that it uses this object.
* This method does not redefine the standard input-output streams. If you
* need that, use {@link #hookIntoRuntimeWithStreams(Ruby)}.
*
* @param runtime The runtime.
* @see #hookIntoRuntimeWithStreams(Ruby)
*/
public void hookIntoRuntime(final Ruby runtime) {
this.runtime = runtime;
/* Hack in to replace usual readline with this */
runtime.getLoadService().require("readline");
RubyModule readlineM = runtime.fastGetModule("Readline");
readlineM.defineModuleFunction("readline", new Callback() {
public IRubyObject execute(IRubyObject recv, IRubyObject[] args,
Block block) {
String line = readLine(args[0].toString());
if (line != null) {
return RubyString.newUnicodeString(runtime, line);
} else {
return runtime.getNil();
}
}
public Arity getArity() {
return Arity.twoArguments();
}
});
}
示例2: instantiateClass
import org.jruby.RubyModule; //导入依赖的package包/类
/**
* instantiateClass
*
* @param runtime
* @param module
* @param name
* @param args
* @return
*/
public static IRubyObject instantiateClass(Ruby runtime, String module, String name, IRubyObject... args)
{
ThreadContext threadContext = runtime.getCurrentContext();
IRubyObject result = null;
// try to load the module
RubyModule rubyModule = runtime.getModule(module);
if (rubyModule != null)
{
// now try to load the class
RubyClass rubyClass = rubyModule.getClass(name);
// instantiate it, if it exists
if (rubyClass != null)
{
result = rubyClass.newInstance(threadContext, args, Block.NULL_BLOCK);
}
}
return result;
}
示例3: define
import org.jruby.RubyModule; //导入依赖的package包/类
/**
* This method registers the class with the given runtime.
*
* @param runtime an instance of the Ruby runtime
* @return a RubyClass object with metadata about the registered class
*/
public static RubyClass define(Ruby runtime) {
RubyClass result = runtime.defineClass("Schema",runtime.getObject(), ALLOCATOR);
result.kindOf = new RubyModule.KindOf() {
public boolean isKindOf(IRubyObject obj, RubyModule type) {
return obj instanceof RubySchema;
}
};
result.includeModule(runtime.getEnumerable());
result.defineAnnotatedMethods(RubySchema.class);
return result;
}
示例4: define
import org.jruby.RubyModule; //导入依赖的package包/类
/**
* This method registers the class with the given runtime. It is not necessary to do this here,
* but it is simpler to associate the methods necessary to register the class with the class
* itself, so on the Library side it is possible to just specify "RubyDataBag.define(runtime)".
*
* @param runtime an instance of the Ruby runtime
* @return a RubyClass object with metadata about the registered class
*/
public static RubyClass define(Ruby runtime) {
// This generates the class object associated with DataBag, and registers it with the
// runtime. The RubyClass object has all the metadata associated with a Class itself.
RubyClass result = runtime.defineClass("DataBag", runtime.getObject(), ALLOCATOR);
// This registers a method which can be used to know whether a module is an
// instance of the class.
result.kindOf = new RubyModule.KindOf() {
public boolean isKindOf(IRubyObject obj, RubyModule type) {
return obj instanceof RubyDataBag;
}
};
// This includes the Enumerable module that we specified.
result.includeModule(runtime.getEnumerable());
// This method actually reads the annotations we placed and registers
// all of the methods.
result.defineAnnotatedMethods(RubyDataBag.class);
// This returns the RubyClass object with all the new metadata.
return result;
}
示例5: init
import org.jruby.RubyModule; //导入依赖的package包/类
private void init(Ruby ruby) {
RubyModule nokogiri = ruby.defineModule("Nokogiri");
RubyModule xmlModule = nokogiri.defineModuleUnder("XML");
RubyModule xmlSaxModule = xmlModule.defineModuleUnder("SAX");
RubyModule htmlModule = nokogiri.defineModuleUnder("HTML");
RubyModule htmlSaxModule = htmlModule.defineModuleUnder("SAX");
RubyModule xsltModule = nokogiri.defineModuleUnder("XSLT");
createJavaLibraryVersionConstants(ruby, nokogiri);
createNokogiriModule(ruby, nokogiri);
createSyntaxErrors(ruby, nokogiri, xmlModule);
RubyClass xmlNode = createXmlModule(ruby, xmlModule);
createHtmlModule(ruby, htmlModule);
createDocuments(ruby, xmlModule, htmlModule, xmlNode);
createSaxModule(ruby, xmlSaxModule, htmlSaxModule);
createXsltModule(ruby, xsltModule);
nokogiri.setInternalVariable("cache", populateNokogiriClassCahce(ruby));
}
示例6: load
import org.jruby.RubyModule; //导入依赖的package包/类
public void load(Ruby runtime, boolean wrap) throws IOException {
RubyModule jo = runtime.defineModule("Jo");
final ExecutorService executor = Executors.newCachedThreadPool(new ThreadFactory() {
public Thread newThread(Runnable r) {
Thread t = new Thread(r);
t.setDaemon(true);
return t;
}
});
jo.setInternalVariable("executor", executor);
RubyClass joFuture = jo.defineClassUnder("Future", runtime.getObject(), ObjectAllocator.NOT_ALLOCATABLE_ALLOCATOR);
RubyClass joChannel = jo.defineClassUnder("Channel", runtime.getObject(), ObjectAllocator.NOT_ALLOCATABLE_ALLOCATOR);
jo.defineAnnotatedMethods(JoMethods.class);
joFuture.defineAnnotatedMethods(JoFuture.class);
joChannel.defineAnnotatedMethods(JoChannel.class);
runtime.addFinalizer(new Finalizable() {
public void finalize() {
executor.shutdown();
}
});
}
示例7: setup
import org.jruby.RubyModule; //导入依赖的package包/类
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);
}
}
示例8: load
import org.jruby.RubyModule; //导入依赖的package包/类
public void load(Ruby runtime, boolean wrap) {
RubyModule persistent = runtime.getOrCreateModule("Persistent");
RubyClass persistentVector = persistent.defineOrGetClassUnder("Vector", runtime.getObject());
persistentVector.setAllocator(new ObjectAllocator() {
@Override
public IRubyObject allocate(Ruby ruby, RubyClass rubyClass) {
return new PersistentVector(ruby, rubyClass);
}
});
persistentVector.includeModule(runtime.getEnumerable());
persistentVector.defineAnnotatedMethods(PersistentVector.class);
}
示例9: define
import org.jruby.RubyModule; //导入依赖的package包/类
/**
* Registers the DataByteArray class with the Ruby runtime.
*
* @param runtime an instance of the Ruby runtime
* @return a RubyClass object with metadata about the registered class
*/
public static RubyClass define(Ruby runtime) {
RubyClass result = runtime.defineClass("DataByteArray", runtime.getObject(), ALLOCATOR);
result.kindOf = new RubyModule.KindOf() {
public boolean isKindOf(IRubyObject obj, RubyModule type) {
return obj instanceof RubyDataByteArray;
}
};
result.defineAnnotatedMethods(RubyDataByteArray.class);
return result;
}
示例10: createRubyOneofBuilderContext
import org.jruby.RubyModule; //导入依赖的package包/类
public static void createRubyOneofBuilderContext(Ruby runtime) {
RubyModule protobuf = runtime.getClassFromPath("Google::Protobuf");
RubyModule internal = protobuf.defineModuleUnder("Internal");
RubyClass cRubyOneofBuidlerContext = internal.defineClassUnder("OneofBuilderContext", runtime.getObject(), new ObjectAllocator() {
@Override
public IRubyObject allocate(Ruby ruby, RubyClass rubyClass) {
return new RubyOneofBuilderContext(ruby, rubyClass);
}
});
cRubyOneofBuidlerContext.defineAnnotatedMethods(RubyOneofBuilderContext.class);
}
示例11: createRubyOneofDescriptor
import org.jruby.RubyModule; //导入依赖的package包/类
public static void createRubyOneofDescriptor(Ruby runtime) {
RubyModule protobuf = runtime.getClassFromPath("Google::Protobuf");
RubyClass cRubyOneofDescriptor = protobuf.defineClassUnder("OneofDescriptor", runtime.getObject(), new ObjectAllocator() {
@Override
public IRubyObject allocate(Ruby ruby, RubyClass rubyClass) {
return new RubyOneofDescriptor(ruby, rubyClass);
}
});
cRubyOneofDescriptor.defineAnnotatedMethods(RubyOneofDescriptor.class);
cRubyOneofDescriptor.includeModule(runtime.getEnumerable());
}
示例12: buildModuleFromDescriptor
import org.jruby.RubyModule; //导入依赖的package包/类
private RubyModule buildModuleFromDescriptor(ThreadContext context) {
Ruby runtime = context.runtime;
Utils.checkNameAvailability(context, name.asJavaString());
RubyModule enumModule = RubyModule.newModule(runtime);
for (Descriptors.EnumValueDescriptor value : descriptor.getValues()) {
enumModule.defineConstant(value.getName(), runtime.newFixnum(value.getNumber()));
}
enumModule.instance_variable_set(runtime.newString(Utils.DESCRIPTOR_INSTANCE_VAR), this);
enumModule.defineAnnotatedMethods(RubyEnum.class);
return enumModule;
}
示例13: register
import org.jruby.RubyModule; //导入依赖的package包/类
public void register(final Class<? extends Converter> converterClass, String... backends) {
RubyModule module = rubyRuntime.defineModule(getModuleName(converterClass));
RubyClass clazz = module.defineClassUnder(
converterClass.getSimpleName(),
rubyRuntime.getObject(),
new ConverterProxy.Allocator(converterClass));
clazz.defineAnnotatedMethods(ConverterProxy.class);
if (backends.length > 0) {
this.asciidoctorModule.register_converter(clazz, backends);
} else {
this.asciidoctorModule.register_converter(clazz);
}
}
示例14: instantiate
import org.jruby.RubyModule; //导入依赖的package包/类
public static IRubyObject instantiate(final Ruby ruby, final String className, final Object[] parameters) {
IRubyObject result = null;
RubyModule rubyClass = ruby.getClassFromPath( className );
if (rubyClass != null) {
try {
result = (IRubyObject) JavaEmbedUtils.invokeMethod( ruby, rubyClass, "new", parameters, IRubyObject.class );
} catch (Exception e) {
log.error("Unable to instantiate: " + className, e);
throw e;
}
}
return result;
}
示例15: createHtmlModule
import org.jruby.RubyModule; //导入依赖的package包/类
private void createHtmlModule(Ruby ruby, RubyModule htmlModule) {
RubyClass htmlElemDesc = htmlModule.defineClassUnder("ElementDescription", ruby.getObject(), HTML_ELEMENT_DESCRIPTION_ALLOCATOR);
htmlElemDesc.defineAnnotatedMethods(HtmlElementDescription.class);
RubyClass htmlEntityLookup = htmlModule.defineClassUnder("EntityLookup", ruby.getObject(), HTML_ENTITY_LOOKUP_ALLOCATOR);
htmlEntityLookup.defineAnnotatedMethods(HtmlEntityLookup.class);
}