wiktionary_dump_parser/
language_code.rs

1use 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}