use crate::translator::lang::Language;
use super::colors::PromptColor;
pub(crate) const PROMPT_LANG: &str = "${LANG}";
pub fn language_to_str(language: Language) -> String {
let mut lang_str: String = language.to_string();
if lang_str.len() < 3 {
lang_str.push_str(" ");
}
match language {
Language::Belarusian => String::from(format!(
"{}{}{}{}{}{}{}",
PromptColor::Red.to_string(),
lang_str.chars().nth(0).unwrap_or(' '),
PromptColor::Green.to_string(),
lang_str.chars().nth(1).unwrap_or(' '),
PromptColor::White.to_string(),
lang_str.chars().nth(2).unwrap_or(' '),
PromptColor::Reset.to_string()
)),
Language::Bulgarian => String::from(format!(
"{}{}{}{}{}{}{}",
PromptColor::White.to_string(),
lang_str.chars().nth(0).unwrap_or(' '),
PromptColor::Green.to_string(),
lang_str.chars().nth(1).unwrap_or(' '),
PromptColor::Red.to_string(),
lang_str.chars().nth(2).unwrap_or(' '),
PromptColor::Reset.to_string()
)),
Language::Russian => String::from(format!(
"{}{}{}{}{}{}{}",
PromptColor::White.to_string(),
lang_str.chars().nth(0).unwrap_or(' '),
PromptColor::Blue.to_string(),
lang_str.chars().nth(1).unwrap_or(' '),
PromptColor::Red.to_string(),
lang_str.chars().nth(2).unwrap_or(' '),
PromptColor::Reset.to_string()
)),
Language::Serbian => String::from(format!(
"{}{}{}{}{}{}{}",
PromptColor::Red.to_string(),
lang_str.chars().nth(0).unwrap_or(' '),
PromptColor::Blue.to_string(),
lang_str.chars().nth(1).unwrap_or(' '),
PromptColor::White.to_string(),
lang_str.chars().nth(2).unwrap_or(' '),
PromptColor::Reset.to_string()
)),
Language::Ukrainian => String::from(format!(
"{}{}{}{}{}{}{}",
PromptColor::Cyan.to_string(),
lang_str.chars().nth(0).unwrap_or(' '),
PromptColor::Yellow.to_string(),
lang_str.chars().nth(1).unwrap_or(' '),
PromptColor::Cyan.to_string(),
lang_str.chars().nth(2).unwrap_or(' '),
PromptColor::Reset.to_string()
)),
Language::Nil => String::from(format!(
"{}{}{}{}{}",
PromptColor::Blink.to_string(),
lang_str.chars().nth(0).unwrap_or(' '),
lang_str.chars().nth(1).unwrap_or(' '),
lang_str.chars().nth(2).unwrap_or(' '),
PromptColor::Reset.to_string()
))
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_prompt_lang_flag() {
let expected_str = String::from("\x1b[31mб\x1b[32mе\x1b[37mл\x1b[0m");
println!("{}", language_to_str(Language::Belarusian));
assert_eq!(language_to_str(Language::Belarusian), expected_str);
let expected_str = String::from("\x1b[37mб\x1b[32mл\x1b[31mг\x1b[0m");
println!("{}", language_to_str(Language::Bulgarian));
assert_eq!(language_to_str(Language::Bulgarian), expected_str);
let expected_str = String::from("\x1b[37mр\x1b[34mу\x1b[31mс\x1b[0m");
println!("{}", language_to_str(Language::Russian));
assert_eq!(language_to_str(Language::Russian), expected_str);
let expected_str = String::from("\x1b[31mс\x1b[34mр\x1b[37mб\x1b[0m");
println!("{}", language_to_str(Language::Serbian));
assert_eq!(language_to_str(Language::Serbian), expected_str);
let expected_str = String::from("\x1b[36mу\x1b[33mк\x1b[36mр\x1b[0m");
println!("{}", language_to_str(Language::Ukrainian));
assert_eq!(language_to_str(Language::Ukrainian), expected_str);
let expected_str = String::from("\x1b[5mnil\x1b[0m");
println!("{}", language_to_str(Language::Nil));
assert_eq!(language_to_str(Language::Nil), expected_str);
}
}