Skip to main content

use_locale/
lib.rs

1#![forbid(unsafe_code)]
2#![doc = include_str!("../README.md")]
3
4pub use use_currency_code;
5pub use use_language;
6pub use use_locale_match;
7pub use use_locale_tag;
8pub use use_region;
9pub use use_script;
10pub use use_time_zone_id;
11pub use use_timezone;
12
13pub mod prelude;
14
15#[cfg(test)]
16mod tests {
17    use super::prelude::{
18        best_locale_match, fallback_chain, normalize_locale_tag, parse_currency_code,
19        parse_language_code, parse_locale_tag, parse_region_code, parse_script_code,
20        parse_time_zone, parse_time_zone_id,
21    };
22
23    #[test]
24    fn facade_exposes_common_locale_primitives() {
25        assert_eq!(parse_language_code("EN").unwrap().as_str(), "en");
26        assert_eq!(parse_script_code("latn").unwrap().as_str(), "Latn");
27        assert_eq!(parse_region_code("us").unwrap().as_str(), "US");
28        assert_eq!(parse_currency_code("usd").unwrap().as_str(), "USD");
29        assert_eq!(
30            parse_time_zone_id("America/New_York").unwrap().area(),
31            "America"
32        );
33        assert_eq!(
34            parse_time_zone("UTC+05:30").unwrap().to_string(),
35            "UTC+05:30"
36        );
37        assert_eq!(
38            parse_locale_tag("zh-hant-tw").unwrap().as_str(),
39            "zh-Hant-TW"
40        );
41        assert_eq!(normalize_locale_tag("en-us"), Some("en-US".to_string()));
42        assert_eq!(fallback_chain("en-US"), vec!["en-US", "en"]);
43        assert_eq!(
44            best_locale_match("en-US", ["en", "fr"]).unwrap().available,
45            "en"
46        );
47    }
48}