formualizer_eval/locale.rs
1/// Minimal locale model for culture-invariant parsing and case folding.
2#[derive(Copy, Clone, Debug, Eq, PartialEq)]
3pub struct Locale;
4
5impl Locale {
6 pub const fn invariant() -> Self {
7 Locale
8 }
9
10 /// Parse a number using invariant rules (ASCII, dot decimal separator).
11 pub fn parse_number_invariant(&self, s: &str) -> Option<f64> {
12 s.trim().parse::<f64>().ok()
13 }
14
15 /// Case folding for comparisons; invariant = ASCII lower.
16 pub fn fold_case_invariant(&self, s: &str) -> String {
17 s.to_ascii_lowercase()
18 }
19}