changepacks_core/
language.rs1use colored::Colorize;
2use std::fmt::Display;
3
4#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord)]
5pub enum Language {
6 Python,
7 Node,
8 Rust,
9 Dart,
10}
11
12impl Display for Language {
13 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
14 write!(
15 f,
16 "{}",
17 match self {
18 Language::Python => "Python".yellow().bold(),
19 Language::Node => "Node.js".green().bold(),
20 Language::Rust => "Rust".truecolor(139, 69, 19).bold(),
21 Language::Dart => "Dart".blue().bold(),
22 }
23 )
24 }
25}
26
27#[cfg(test)]
28mod tests {
29 use super::*;
30 use rstest::rstest;
31
32 #[rstest]
33 #[case(Language::Python, "Python")]
34 #[case(Language::Node, "Node")]
35 #[case(Language::Rust, "Rust")]
36 #[case(Language::Dart, "Dart")]
37 fn test_language_display(#[case] language: Language, #[case] expected: &str) {
38 let display = format!("{}", language);
39 assert!(display.contains(expected));
40 }
41}