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 #[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}