Class: Rubydex::ModuleDefinition
- Inherits:
-
Definition
- Object
- Definition
- Rubydex::ModuleDefinition
- Defined in:
- ext/rubydex/definition.c
Instance Method Summary collapse
-
#mixins ⇒ Array[Rubydex::Mixin]
Returns mixins attached to this definition.
-
#raw_name ⇒ String
Returns the class, module, or constant name as written in source, preserving explicit parent scopes like "Foo::Bar" and rooted paths like "::Bar".
Methods inherited from Definition
#comments, #declaration, #deprecated?, #document, #initialize, #lexical_nesting, #lexical_owner, #location, #name, #name_location
Constructor Details
This class inherits a constructor from Rubydex::Definition
Instance Method Details
#mixins ⇒ Array[Rubydex::Mixin]
Returns mixins attached to this definition.
368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 |
# File 'ext/rubydex/definition.c', line 368 static VALUE rdxr_definition_mixins(VALUE self) { HandleData *data; void *graph = rdxi_graph_from_handle(self, &data); MixinsIter *iter = rdx_definition_mixins(graph, data->id); if (iter == NULL) { rb_raise(rb_eRuntimeError, "Tried to get mixins for a definition that isn't a namespace"); } size_t len = rdx_mixins_iter_len(iter); VALUE ary = rb_ary_new_capa((long)len); CMixin entry; while (rdx_mixins_iter_next(iter, &entry)) { VALUE constant_ref = rdxi_build_constant_reference(data->graph_obj, &entry.constant_reference); VALUE mixin_class = rdxi_mixin_class_for_kind(entry.kind); VALUE mixin = rb_class_new_instance(1, &constant_ref, mixin_class); rb_ary_push(ary, mixin); } rdx_mixins_iter_free(iter); return ary; } |
#raw_name ⇒ String
Returns the class, module, or constant name as written in source, preserving explicit parent scopes like "Foo::Bar" and rooted paths like "::Bar".
174 175 176 177 178 179 180 181 182 183 184 |
# File 'ext/rubydex/definition.c', line 174 static VALUE rdxr_definition_raw_name(VALUE self) { HandleData *data; void *graph = rdxi_graph_from_handle(self, &data); const char *name = rdx_definition_raw_name(graph, data->id); if (name == NULL) { rb_raise(rb_eRuntimeError, "Definition not found"); } return rdxi_owned_c_string_to_ruby(name); } |