freya_code_editor/
languages.rs1use 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}