glossa/
lib.rs

1#![cfg_attr(not(feature = "std"), no_std)]
2#![cfg_attr(__unstable_doc, feature(doc_auto_cfg, doc_notable_trait))]
3
4// /*!
5// # glossa
6// */
7extern crate alloc;
8
9pub use compact_str::CompactString as MiniStr;
10
11mod cldr_fallback;
12pub(crate) use cldr_fallback::cldr_fallback_mapping;
13
14pub mod error;
15pub use error::{GlossaError as Error, GlossaResult as Result};
16//
17/// Language Identifier
18pub use lang_id::LangID;
19
20/// Contains the FallbackChain Trait implementation
21pub mod fallback;
22pub use fallback::{try_init_chain, try_init_chain_from_slice};
23
24#[cfg(feature = "std")]
25pub mod sys; // old_name: lazy_values
26
27pub mod traits;
28
29mod context;
30#[cfg(feature = "std")]
31pub use context::LocaleContext;
32
33pub mod misc {
34  use lang_id::LangID;
35
36  /// `language.split(['.', '@', ':']).next().into().parse()`
37  pub fn normalize_glossa_lang(language: Option<&str>) -> Option<LangID> {
38    language.and_then(|v| {
39      v.split(['.', '@', ':'])
40        .map(|x| x.trim_ascii())
41        .find(|x| !x.is_empty())
42        .and_then(|x| x.parse().ok())
43    })
44  }
45}