Skip to main content

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    SQL,
13    #[default]
14    Unknown,
15}
16
17impl Display for LanguageId {
18    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
19        match self {
20            Self::Rust => f.write_str("Rust"),
21            Self::Python => f.write_str("Python"),
22            Self::JavaScript => f.write_str("JavaScript"),
23            Self::TypeScript => f.write_str("TypeScript"),
24            Self::Markdown => f.write_str("Markdown"),
25            Self::Toml => f.write_str("TOML"),
26            Self::Json => f.write_str("JSON"),
27            Self::SQL => f.write_str("SQL"),
28            Self::Unknown => f.write_str("Unknown"),
29        }
30    }
31}
32
33impl LanguageId {
34    pub fn parse(id: &str) -> Self {
35        match id {
36            "rs" => LanguageId::Rust,
37            "py" => LanguageId::Python,
38            "js" => LanguageId::JavaScript,
39            "ts" => LanguageId::TypeScript,
40            "md" => LanguageId::Markdown,
41            "toml" => LanguageId::Toml,
42            "json" => LanguageId::Json,
43            "sql" => LanguageId::SQL,
44            _ => LanguageId::Unknown,
45        }
46    }
47}