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:5012–5038  ·  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

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