use std::{fmt, path::Path};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum Language {
Rust,
Go,
CSharp,
CPlusPlus,
C,
Java,
JavaScript,
}
impl Language {
pub fn from_path(path: &Path) -> Option<Self> {
match path.extension().and_then(|e| e.to_str()) {
Some("rs") => Some(Language::Rust),
Some("go") => Some(Language::Go),
Some("js") => Some(Language::JavaScript),
Some("c") => Some(Language::C),
Some("cs") => Some(Language::CSharp),
Some("cpp") => Some(Language::CPlusPlus),
Some("java") => Some(Language::Java),
_ => None,
}
}
}
impl fmt::Display for Language {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Language::Rust => write!(f, "Rust"),
Language::Go => write!(f, "Go"),
Language::CSharp => write!(f, "C#"),
Language::CPlusPlus => write!(f, "C++"),
Language::C => write!(f, "C"),
Language::Java => write!(f, "Java"),
Language::JavaScript => write!(f, "JavaScript"),
}
}
}