1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
mod lang;
pub use lang::Lang;
mod code_lang;
pub use lang_code::LANG_CODE;
mod lang_code;
pub use code_lang::CODE_LANG;

pub fn code_lang(code: impl AsRef<str>) -> Option<Lang> {
  let code = code.as_ref().to_lowercase();
  CODE_LANG.get(&code).cloned()
}

pub fn code_lang_unwrap(code: impl AsRef<str>) -> Lang {
  CODE_LANG.get(code.as_ref()).unwrap().clone()
}

pub fn lang_code(lang: lang::Lang) -> &'static str {
  LANG_CODE[lang as usize]
}

impl Lang {
  pub fn code(&self) -> &'static str {
    LANG_CODE[self.clone() as usize]
  }
}