in rust/fury-core/src/meta/meta_string.rs [131:164]
fn compute_statistics(&self, chars: &str) -> StringStatistics {
let mut can_lower_upper_digit_special_encoded = true;
let mut can_lower_special_encoded = true;
let mut digit_count = 0;
let mut upper_count = 0;
for c in chars.chars() {
if can_lower_upper_digit_special_encoded
&& !(c.is_lowercase()
|| c.is_uppercase()
|| c.is_ascii_digit()
|| c == '.'
|| c == '_')
{
can_lower_upper_digit_special_encoded = false;
}
if can_lower_special_encoded
&& !(c.is_lowercase() || matches!(c, '.' | '_' | '$' | '|'))
{
can_lower_special_encoded = false;
}
if c.is_ascii_digit() {
digit_count += 1;
}
if c.is_uppercase() {
upper_count += 1;
}
}
StringStatistics {
digit_count,
upper_count,
can_lower_upper_digit_special_encoded,
can_lower_special_encoded,
}
}