| 855 | } |
| 856 | |
| 857 | static void extract_channels_ruby(CBMExtractCtx *ctx) { |
| 858 | TSNodeStack stack; |
| 859 | ts_nstack_init(&stack, ctx->arena, CHAN_STACK_CAP); |
| 860 | ts_nstack_push(&stack, ctx->arena, ctx->root); |
| 861 | |
| 862 | while (stack.count > 0) { |
| 863 | TSNode node = ts_nstack_pop(&stack); |
| 864 | if (strcmp(ts_node_type(node), "call") == 0) { |
| 865 | ruby_process_call(ctx, node); |
| 866 | } |
| 867 | uint32_t count = ts_node_child_count(node); |
| 868 | for (int i = (int)count - SKIP_ONE; i >= 0; i--) { |
| 869 | ts_nstack_push(&stack, ctx->arena, ts_node_child(node, (uint32_t)i)); |
| 870 | } |
| 871 | } |
| 872 | } |
| 873 | |
| 874 | /* ══════════════════════════════════════════════════════════════════ |
| 875 | * Elixir — Phoenix.PubSub, Phoenix.Channel |
no test coverage detected