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; }
public RubyModule getOverlayModuleForWrite(ThreadContext context) { RubyModule omod = overlayModule; if (omod == null) { overlayModule = omod = RubyModule.newModule(context.runtime); } return omod; } }
public RubyModule getOverlayModuleForWrite(ThreadContext context) { RubyModule omod = overlayModule; if (omod == null) { overlayModule = omod = RubyModule.newModule(context.runtime); } return omod; } }
/** rb_module_new/rb_define_module_id/rb_name_class/rb_set_class_path * */ public static RubyModule newModule(Ruby runtime, String name, RubyModule parent, boolean setParent) { RubyModule module = newModule(runtime); module.setBaseName(name); if (setParent) module.setParent(parent); parent.setConstant(name, module); return module; }
/** rb_module_new/rb_define_module_id/rb_name_class/rb_set_class_path * */ public static RubyModule newModule(Ruby runtime, String name, RubyModule parent, boolean setParent) { RubyModule module = newModule(runtime); module.setBaseName(name); if (setParent) module.setParent(parent); parent.setConstant(name, module); return module; }
/** rb_module_new/rb_define_module_id/rb_name_class/rb_set_class_path * */ public static RubyModule newModule(Ruby runtime, String name, RubyModule parent, boolean setParent) { RubyModule module = newModule(runtime); module.setBaseName(name); if (setParent) module.setParent(parent); parent.setConstant(name, module); return module; }
/** rb_module_new/rb_define_module_id/rb_name_class/rb_set_class_path * */ public static RubyModule newModule(Ruby runtime, String name, RubyModule parent, boolean setParent) { RubyModule module = newModule(runtime); module.setBaseName(name); if (setParent) module.setParent(parent); parent.setConstant(name, module); return module; }
private void wrapWithModule(RubyBasicObject self, ParseResult result) { // toss an anonymous module into the search path RubyModule wrapper = RubyModule.newModule(this); self.extend(new IRubyObject[] {wrapper}); StaticScope top = result.getStaticScope(); StaticScope newTop = staticScopeFactory.newLocalScope(null); top.setPreviousCRefScope(newTop); top.setModule(wrapper); }
private void wrapWithModule(RubyBasicObject self, ParseResult result) { // toss an anonymous module into the search path RubyModule wrapper = RubyModule.newModule(this); self.extend(new IRubyObject[] {wrapper}); StaticScope top = result.getStaticScope(); StaticScope newTop = staticScopeFactory.newLocalScope(null); top.setPreviousCRefScope(newTop); top.setModule(wrapper); }
public static void preLoadCommon(ThreadContext context, StaticScope staticScope, boolean wrap) { RubyModule objectClass = context.runtime.getObject(); if (wrap) { objectClass = RubyModule.newModule(context.runtime); } staticScope.setModule(objectClass); DynamicScope scope = DynamicScope.newDynamicScope(staticScope); // Each root node has a top-level scope that we need to push context.preScopedBody(scope); context.preNodeEval(context.runtime.getTopSelf()); }
public static void preLoadCommon(ThreadContext context, StaticScope staticScope, boolean wrap) { RubyModule objectClass = context.runtime.getObject(); if (wrap) { objectClass = RubyModule.newModule(context.runtime); } staticScope.setModule(objectClass); DynamicScope scope = DynamicScope.newDynamicScope(staticScope); // Each root node has a top-level scope that we need to push context.preScopedBody(scope); context.preNodeEval(context.runtime.getTopSelf()); }
/** this method should be used only by interpreter or compiler * */ public RubyModule defineOrGetModuleUnder(String name) { // This method is intended only for defining new modules in Ruby code Ruby runtime = getRuntime(); IRubyObject moduleObj = getConstantAtSpecial(name); RubyModule module; if (moduleObj != null) { if (!moduleObj.isModule()) throw runtime.newTypeError(name + " is not a module"); module = (RubyModule)moduleObj; } else if (classProviders != null && (module = searchProvidersForModule(name)) != null) { // reopen a java module } else { module = RubyModule.newModule(runtime, name, this, true); } return module; }
/** this method should be used only by interpreter or compiler * */ public RubyModule defineOrGetModuleUnder(String name) { // This method is intended only for defining new modules in Ruby code Ruby runtime = getRuntime(); IRubyObject moduleObj = getConstantAtSpecial(name); RubyModule module; if (moduleObj != null) { if (!moduleObj.isModule()) throw runtime.newTypeError(name + " is not a module"); module = (RubyModule)moduleObj; } else if (classProviders != null && (module = searchProvidersForModule(name)) != null) { // reopen a java module } else { module = RubyModule.newModule(runtime, name, this, true); } return module; }
public static void preLoadCommon(ThreadContext context, StaticScope staticScope, boolean wrap) { RubyClass objectClass = context.runtime.getObject(); IRubyObject topLevel = context.runtime.getTopSelf(); if (wrap) { staticScope.setModule(RubyModule.newModule(context.runtime)); } else { staticScope.setModule(objectClass); } DynamicScope scope = DynamicScope.newDynamicScope(staticScope); // Each root node has a top-level scope that we need to push context.preScopedBody(scope); context.preNodeEval(objectClass, topLevel); }
public static void preLoadCommon(ThreadContext context, StaticScope staticScope, boolean wrap) { RubyClass objectClass = context.runtime.getObject(); IRubyObject topLevel = context.runtime.getTopSelf(); if (wrap) { staticScope.setModule(RubyModule.newModule(context.runtime)); } else { staticScope.setModule(objectClass); } DynamicScope scope = DynamicScope.newDynamicScope(staticScope); // Each root node has a top-level scope that we need to push context.preScopedBody(scope); context.preNodeEval(objectClass, topLevel); }
/** this method should be used only by interpreter or compiler * */ public RubyModule defineOrGetModuleUnder(String name) { // This method is intended only for defining new modules in Ruby code Ruby runtime = getRuntime(); IRubyObject moduleObj = getConstantAtSpecial(name); RubyModule module; if (moduleObj != null) { if (!moduleObj.isModule()) throw runtime.newTypeError(str(runtime, ids(runtime, name), " is not a module")); module = (RubyModule)moduleObj; } else if ((module = searchProvidersForModule(name)) != null) { // reopen a java module } else { module = RubyModule.newModule(runtime, name, this, true); } return module; }
/** this method should be used only by interpreter or compiler * */ public RubyModule defineOrGetModuleUnder(String name) { // This method is intended only for defining new modules in Ruby code Ruby runtime = getRuntime(); IRubyObject moduleObj = getConstantAtSpecial(name); RubyModule module; if (moduleObj != null) { if (!moduleObj.isModule()) throw runtime.newTypeError(str(runtime, ids(runtime, name), " is not a module")); module = (RubyModule)moduleObj; } else if ((module = searchProvidersForModule(name)) != null) { // reopen a java module } else { module = RubyModule.newModule(runtime, name, this, true); } return module; }
/** * Define a new module with the given name under the given module or * class namespace. Roughly equivalent to rb_define_module_under in MRI. * * @param name The name of the new module * @param parent The class or module namespace under which to define the * module * @returns The new module */ @Extension public RubyModule defineModuleUnder(String name, RubyModule parent) { IRubyObject moduleObj = parent.getConstantAt(name); boolean parentIsObject = parent == objectClass; if (moduleObj != null ) { if (moduleObj.isModule()) return (RubyModule)moduleObj; if (parentIsObject) { throw newTypeError(moduleObj.getMetaClass().getName() + " is not a module"); } else { throw newTypeError(parent.getName() + "::" + moduleObj.getMetaClass().getName() + " is not a module"); } } return RubyModule.newModule(this, name, parent, !parentIsObject); }
public void loadScope(IRScope scope, boolean wrap) { IRubyObject self = wrap ? TopSelfFactory.createTopSelf(this, true) : getTopSelf(); ThreadContext context = getCurrentContext(); String file = context.getFile(); try { ThreadContext.pushBacktrace(context, ROOT_FRAME_NAME, file, 0); context.preNodeEval(self); if (wrap) { // toss an anonymous module into the search path scope.getStaticScope().setModule(RubyModule.newModule(this)); } runInterpreter(context, scope, self); } finally { context.postNodeEval(); ThreadContext.popBacktrace(context); } }
public void loadScope(IRScope scope, boolean wrap) { IRubyObject self = wrap ? TopSelfFactory.createTopSelf(this, true) : getTopSelf(); ThreadContext context = getCurrentContext(); String file = context.getFile(); try { ThreadContext.pushBacktrace(context, ROOT_FRAME_NAME, file, 0); context.preNodeEval(self); if (wrap) { // toss an anonymous module into the search path scope.getStaticScope().setModule(RubyModule.newModule(this)); } runInterpreter(context, scope, self); } finally { context.postNodeEval(); ThreadContext.popBacktrace(context); } }