sakurs_cli/
language_source.rs1use crate::commands::process::Language;
4use std::path::PathBuf;
5
6#[derive(Debug, Clone)]
8pub enum LanguageSource {
9 BuiltIn(Language),
11 External {
13 path: PathBuf,
15 language_code: Option<String>,
17 },
18}
19
20impl LanguageSource {
21 pub fn display_name(&self) -> String {
23 match self {
24 LanguageSource::BuiltIn(lang) => format!("Built-in: {}", lang.as_str()),
25 LanguageSource::External {
26 path,
27 language_code,
28 } => {
29 if let Some(code) = language_code {
30 format!("External: {} (code: {})", path.display(), code)
31 } else {
32 format!("External: {}", path.display())
33 }
34 }
35 }
36 }
37}
38
39impl Language {
40 pub fn as_str(&self) -> &'static str {
42 match self {
43 Language::English => "English",
44 Language::Japanese => "Japanese",
45 }
46 }
47
48 pub fn code(&self) -> &'static str {
50 match self {
51 Language::English => "en",
52 Language::Japanese => "ja",
53 }
54 }
55}