wiktionary_dump_parser/
language_code.rs1use crate::error::{Error, Result};
2
3#[derive(Debug, Clone, Eq, PartialEq, Ord, PartialOrd)]
4pub enum LanguageCode {
5 English,
6 French,
7 Russian,
8 German,
9 Finnish,
10}
11
12impl LanguageCode {
13 pub fn from_wiktionary_abbreviation(string: &str) -> Result<Self> {
14 Ok(match string {
15 "en" => Self::English,
16 "fr" => Self::French,
17 "ru" => Self::Russian,
18 "de" => Self::German,
19 "fi" => Self::Finnish,
20 unknown => {
21 return Err(Error::UnknownWiktionaryLanguageAbbreviation(
22 unknown.to_string(),
23 ))
24 }
25 })
26 }
27
28 pub fn to_wiktionary_abbreviation(&self) -> &'static str {
29 match self {
30 LanguageCode::English => "en",
31 LanguageCode::French => "fr",
32 LanguageCode::Russian => "ru",
33 LanguageCode::German => "de",
34 LanguageCode::Finnish => "fi",
35 }
36 }
37
38 pub fn from_english_name(string: &str) -> Result<Self> {
39 Ok(match string {
40 "English" => Self::English,
41 "French" => Self::French,
42 "Russian" => Self::Russian,
43 "German" => Self::German,
44 "Finnish" => Self::Finnish,
45 unknown => return Err(Error::UnknownEnglishLanguageName(unknown.to_string())),
46 })
47 }
48}