MCPcopy Create free account
hub / github.com/DeusData/codebase-memory-mcp / emit_elixir_module_class

Function emit_elixir_module_class

internal/cbm/extract_defs.c:4395–4421  ·  view source on GitHub ↗

Emit Class definition for an Elixir defmodule node. Returns do_block or null.

Source from the content-addressed store, hash-verified

4393
4394// Emit Class definition for an Elixir defmodule node. Returns do_block or null.
4395static TSNode emit_elixir_module_class(CBMExtractCtx *ctx, TSNode cur) {
4396 CBMArena *a = ctx->arena;
4397 TSNode null_node = {0};
4398 TSNode args = elixir_call_args(cur);
4399 if (ts_node_is_null(args)) {
4400 return null_node;
4401 }
4402 TSNode name_node = ts_node_child(args, 0);
4403 if (ts_node_is_null(name_node)) {
4404 return null_node;
4405 }
4406 char *name = cbm_node_text(a, name_node, ctx->source);
4407 if (!name || !name[0]) {
4408 return null_node;
4409 }
4410 CBMDefinition def;
4411 memset(&def, 0, sizeof(def));
4412 def.name = name;
4413 def.qualified_name = cbm_fqn_compute(a, ctx->project, ctx->rel_path, name);
4414 def.label = "Class";
4415 def.file_path = ctx->rel_path;
4416 def.start_line = ts_node_start_point(cur).row + TS_LINE_OFFSET;
4417 def.end_line = ts_node_end_point(cur).row + TS_LINE_OFFSET;
4418 def.is_exported = true;
4419 cbm_defs_push(&ctx->result->defs, a, def);
4420 return cbm_find_child_by_kind(cur, "do_block");
4421}
4422
4423// Process Elixir call nodes iteratively — handles defmodule/def/defp/defmacro
4424// without recursion between extract_elixir_call ↔ extract_elixir_module_def.

Callers 1

extract_elixir_callFunction · 0.85

Calls 5

elixir_call_argsFunction · 0.85
cbm_node_textFunction · 0.85
cbm_fqn_computeFunction · 0.85
cbm_defs_pushFunction · 0.85
cbm_find_child_by_kindFunction · 0.85

Tested by

no test coverage detected