#![allow(clippy::wildcard_imports, clippy::enum_glob_use)]
#![allow(
clippy::cast_precision_loss,
clippy::cast_possible_truncation,
clippy::cast_sign_loss
)]
use super::*;
impl Npm for ElixirCode {
fn compute<'a>(
node: &Node<'a>,
code: &'a [u8],
_ancestors: Ancestors<'a, '_>,
stats: &mut Stats,
) {
use crate::metrics::cognitive::{elixir_call_keyword, elixir_do_block_call_children};
if !matches!(elixir_call_keyword(node, code), Some("defmodule")) {
return;
}
for stmt in elixir_do_block_call_children(node) {
match elixir_call_keyword(&stmt, code) {
Some("def" | "defmacro") => {
stats.class_nm += 1;
stats.class_npm += 1;
}
Some("defp" | "defmacrop") => {
stats.class_nm += 1;
}
_ => {}
}
}
}
}