use crate::lang::{DEFAULT_LANG, Lang, LangEntry, data::LANG_TABLE};
#[derive(Debug, Clone, Copy)]
pub struct Context {
pub lang: Lang,
pub lang_entry: LangEntry,
}
impl Default for Context {
#[inline(always)]
fn default() -> Self {
Self::new(DEFAULT_LANG)
}
}
impl Context {
#[inline(always)]
pub fn new(lang: Lang) -> Self {
let lang_entry = LANG_TABLE
.get(lang.code())
.copied()
.expect("language not present in LANG_TABLE – this is a bug");
Self { lang, lang_entry }
}
#[inline(always)]
pub fn with_modified(lang: Lang, f: impl FnOnce(&mut LangEntry)) -> Self {
let mut lang_entry = LANG_TABLE
.get(lang.code())
.copied()
.expect("language not present in LANG_TABLE – this is a bug");
f(&mut lang_entry);
Self { lang, lang_entry }
}
}