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:5024–5050  ·  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

5022
5023// Emit Class definition for an Elixir defmodule node. Returns do_block or null.
5024static TSNode emit_elixir_module_class(CBMExtractCtx *ctx, TSNode cur) {
5025 CBMArena *a = ctx->arena;
5026 TSNode null_node = {0};
5027 TSNode args = elixir_call_args(cur);
5028 if (ts_node_is_null(args)) {
5029 return null_node;
5030 }
5031 TSNode name_node = ts_node_child(args, 0);
5032 if (ts_node_is_null(name_node)) {
5033 return null_node;
5034 }
5035 char *name = cbm_node_text(a, name_node, ctx->source);
5036 if (!name || !name[0]) {
5037 return null_node;
5038 }
5039 CBMDefinition def;
5040 memset(&def, 0, sizeof(def));
5041 def.name = name;
5042 def.qualified_name = cbm_fqn_compute(a, ctx->project, ctx->rel_path, name);
5043 def.label = "Class";
5044 def.file_path = ctx->rel_path;
5045 def.start_line = ts_node_start_point(cur).row + TS_LINE_OFFSET;
5046 def.end_line = ts_node_end_point(cur).row + TS_LINE_OFFSET;
5047 def.is_exported = true;
5048 cbm_defs_push(&ctx->result->defs, a, def);
5049 return cbm_find_child_by_kind(cur, "do_block");
5050}
5051
5052// Process Elixir call nodes iteratively — handles defmodule/def/defp/defmacro
5053// 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