cloakrs_locales/lib.rs
1//! Locale-specific recognizer bundles for cloakrs.
2//!
3//! Country-specific recognizers such as US SSN, Dutch BSN, and UK NINO.
4//!
5//! # Examples
6//!
7//! ```
8//! use cloakrs_core::{EntityType, Locale};
9//!
10//! let scanner = cloakrs_locales::default_registry()
11//! .into_scanner_builder()
12//! .locale(Locale::EU)
13//! .without_masking()
14//! .build()
15//! .unwrap();
16//! let result = scanner.scan("BSN 123456782").unwrap();
17//! assert!(result.findings.iter().any(|finding| finding.entity_type == EntityType::Bsn));
18//! ```
19
20mod br_br;
21mod common;
22mod de_de;
23mod en_gb;
24mod eu;
25mod fr_fr;
26mod in_in;
27mod nl_nl;
28
29pub use br_br::{CnpjRecognizer, CpfRecognizer};
30pub use de_de::SteuerIdRecognizer;
31pub use en_gb::{NhsNumberRecognizer, NinoRecognizer};
32pub use fr_fr::InseeNirRecognizer;
33pub use in_in::{AadhaarRecognizer, PanRecognizer};
34pub use nl_nl::BsnRecognizer;
35
36use cloakrs_core::RecognizerRegistry;
37
38/// Returns the crate version.
39#[must_use]
40pub fn version() -> &'static str {
41 env!("CARGO_PKG_VERSION")
42}
43
44/// Builds a registry containing universal recognizers plus locale-specific recognizers.
45///
46/// # Examples
47///
48/// ```
49/// let registry = cloakrs_locales::default_registry();
50/// assert!(!registry.is_empty());
51/// ```
52#[must_use]
53pub fn default_registry() -> RecognizerRegistry {
54 let mut registry = cloakrs_patterns::default_registry();
55 register_locale_recognizers(&mut registry);
56 registry
57}
58
59/// Registers locale-specific recognizers into an existing registry.
60///
61/// # Examples
62///
63/// ```
64/// let mut registry = cloakrs_patterns::default_registry();
65/// cloakrs_locales::register_locale_recognizers(&mut registry);
66/// assert!(!registry.is_empty());
67/// ```
68pub fn register_locale_recognizers(registry: &mut RecognizerRegistry) {
69 registry.register(BsnRecognizer);
70 registry.register(SteuerIdRecognizer);
71 registry.register(AadhaarRecognizer);
72 registry.register(PanRecognizer);
73 registry.register(CpfRecognizer);
74 registry.register(CnpjRecognizer);
75 registry.register(InseeNirRecognizer);
76 registry.register(NinoRecognizer);
77 registry.register(NhsNumberRecognizer);
78}