freya_code_editor/
languages.rs

1use std::fmt::Display;
2
3#[derive(Default, Clone, Debug, PartialEq, Copy)]
4pub enum LanguageId {
5    Rust,
6    Python,
7    JavaScript,
8    TypeScript,
9    Markdown,
10    Toml,
11    Json,
12    #[default]
13    Unknown,
14}
15
16impl Display for LanguageId {
17    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
18        match self {
19            Self::Rust => f.write_str("Rust"),
20            Self::Python => f.write_str("Python"),
21            Self::JavaScript => f.write_str("JavaScript"),
22            Self::TypeScript => f.write_str("TypeScript"),
23            Self::Markdown => f.write_str("Markdown"),
24            Self::Toml => f.write_str("TOML"),
25            Self::Json => f.write_str("JSON"),
26            Self::Unknown => f.write_str("Unknown"),
27        }
28    }
29}
30
31impl LanguageId {
32    pub fn parse(id: &str) -> Self {
33        match id {
34            "rs" => LanguageId::Rust,
35            "py" => LanguageId::Python,
36            "js" => LanguageId::JavaScript,
37            "ts" => LanguageId::TypeScript,
38            "md" => LanguageId::Markdown,
39            "toml" => LanguageId::Toml,
40            "json" => LanguageId::Json,
41            _ => LanguageId::Unknown,
42        }
43    }
44}