#[derive(Debug, Clone, Copy)]
pub enum Language {
Python,
JavaScript,
TypeScript,
Rust,
Go,
Java,
Cpp,
Ruby,
Markdown,
Latex,
Html,
}
impl Language {
pub fn separators(&self) -> Vec<String> {
match self {
Language::Python => vec![
"\nclass ".to_string(),
"\ndef ".to_string(),
"\n\tdef ".to_string(),
"\n\n".to_string(),
"\n".to_string(),
" ".to_string(),
String::new(),
],
Language::JavaScript => vec![
"\nfunction ".to_string(),
"\nconst ".to_string(),
"\nlet ".to_string(),
"\nvar ".to_string(),
"\nclass ".to_string(),
"\n\n".to_string(),
"\n".to_string(),
" ".to_string(),
String::new(),
],
Language::TypeScript => vec![
"\nfunction ".to_string(),
"\nconst ".to_string(),
"\nlet ".to_string(),
"\nvar ".to_string(),
"\nclass ".to_string(),
"\ninterface ".to_string(),
"\ntype ".to_string(),
"\nenum ".to_string(),
"\n\n".to_string(),
"\n".to_string(),
" ".to_string(),
String::new(),
],
Language::Rust => vec![
"\nfn ".to_string(),
"\nstruct ".to_string(),
"\nimpl ".to_string(),
"\nenum ".to_string(),
"\nmod ".to_string(),
"\ntrait ".to_string(),
"\n\n".to_string(),
"\n".to_string(),
" ".to_string(),
String::new(),
],
Language::Go => vec![
"\nfunc ".to_string(),
"\ntype ".to_string(),
"\n\n".to_string(),
"\n".to_string(),
" ".to_string(),
String::new(),
],
Language::Java => vec![
"\nclass ".to_string(),
"\npublic ".to_string(),
"\nprotected ".to_string(),
"\nprivate ".to_string(),
"\nstatic ".to_string(),
"\n\n".to_string(),
"\n".to_string(),
" ".to_string(),
String::new(),
],
Language::Cpp => vec![
"\nclass ".to_string(),
"\nvoid ".to_string(),
"\nint ".to_string(),
"\nfloat ".to_string(),
"\n\n".to_string(),
"\n".to_string(),
" ".to_string(),
String::new(),
],
Language::Ruby => vec![
"\ndef ".to_string(),
"\nclass ".to_string(),
"\nmodule ".to_string(),
"\n\n".to_string(),
"\n".to_string(),
" ".to_string(),
String::new(),
],
Language::Markdown => vec![
"\n## ".to_string(),
"\n### ".to_string(),
"\n#### ".to_string(),
"\n\n".to_string(),
"\n".to_string(),
" ".to_string(),
String::new(),
],
Language::Latex => vec![
"\n\\chapter{".to_string(),
"\n\\section{".to_string(),
"\n\\subsection{".to_string(),
"\n\n".to_string(),
"\n".to_string(),
" ".to_string(),
String::new(),
],
Language::Html => vec![
"<div".to_string(),
"<p".to_string(),
"<br".to_string(),
"<li".to_string(),
"<h1".to_string(),
"<h2".to_string(),
"<h3".to_string(),
"<table".to_string(),
"<tr".to_string(),
"\n\n".to_string(),
"\n".to_string(),
" ".to_string(),
String::new(),
],
}
}
}