testlint_sdk/common/
mod.rs1#[derive(Debug, Clone, PartialEq, Eq)]
5pub enum Language {
6 Python,
7 Java,
8 JavaScript,
9 TypeScript,
10 Go,
11 Rust,
12 CSharp,
13 Ruby,
14 Php,
15 Cpp,
16}
17
18impl std::fmt::Display for Language {
19 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
20 match self {
21 Language::Python => write!(f, "Python"),
22 Language::Java => write!(f, "Java"),
23 Language::JavaScript => write!(f, "JavaScript"),
24 Language::TypeScript => write!(f, "TypeScript"),
25 Language::Go => write!(f, "Go"),
26 Language::Rust => write!(f, "Rust"),
27 Language::CSharp => write!(f, "C#"),
28 Language::Ruby => write!(f, "Ruby"),
29 Language::Php => write!(f, "PHP"),
30 Language::Cpp => write!(f, "C++"),
31 }
32 }
33}
34
35impl Language {
36 pub fn name(&self) -> &'static str {
38 match self {
39 Language::Python => "python",
40 Language::Java => "java",
41 Language::JavaScript => "javascript",
42 Language::TypeScript => "typescript",
43 Language::Go => "go",
44 Language::Rust => "rust",
45 Language::CSharp => "csharp",
46 Language::Ruby => "ruby",
47 Language::Php => "php",
48 Language::Cpp => "cpp",
49 }
50 }
51
52 #[allow(clippy::should_implement_trait)]
54 pub fn from_str(s: &str) -> Option<Self> {
55 match s.to_lowercase().as_str() {
56 "python" | "py" => Some(Language::Python),
57 "java" | "jvm" | "kotlin" | "kt" | "scala" => Some(Language::Java),
58 "javascript" | "js" | "node" => Some(Language::JavaScript),
59 "typescript" | "ts" => Some(Language::TypeScript),
60 "go" | "golang" => Some(Language::Go),
61 "rust" | "rs" | "cargo" => Some(Language::Rust),
62 "csharp" | "c#" | "cs" | "dotnet" => Some(Language::CSharp),
63 "ruby" | "rb" => Some(Language::Ruby),
64 "php" => Some(Language::Php),
65 "cpp" | "c++" | "cxx" => Some(Language::Cpp),
66 _ => None,
67 }
68 }
69}