1#[derive(Debug, Clone, Copy)]
3pub enum Language {
4 Python,
5 JavaScript,
6 TypeScript,
7 Rust,
8 Go,
9 Java,
10 Cpp,
11 Ruby,
12 Markdown,
13 Latex,
14 Html,
15}
16
17impl Language {
18 pub fn separators(&self) -> Vec<String> {
20 match self {
21 Language::Python => vec![
22 "\nclass ".to_string(),
23 "\ndef ".to_string(),
24 "\n\tdef ".to_string(),
25 "\n\n".to_string(),
26 "\n".to_string(),
27 " ".to_string(),
28 String::new(),
29 ],
30 Language::JavaScript => vec![
31 "\nfunction ".to_string(),
32 "\nconst ".to_string(),
33 "\nlet ".to_string(),
34 "\nvar ".to_string(),
35 "\nclass ".to_string(),
36 "\n\n".to_string(),
37 "\n".to_string(),
38 " ".to_string(),
39 String::new(),
40 ],
41 Language::TypeScript => vec![
42 "\nfunction ".to_string(),
43 "\nconst ".to_string(),
44 "\nlet ".to_string(),
45 "\nvar ".to_string(),
46 "\nclass ".to_string(),
47 "\ninterface ".to_string(),
48 "\ntype ".to_string(),
49 "\nenum ".to_string(),
50 "\n\n".to_string(),
51 "\n".to_string(),
52 " ".to_string(),
53 String::new(),
54 ],
55 Language::Rust => vec![
56 "\nfn ".to_string(),
57 "\nstruct ".to_string(),
58 "\nimpl ".to_string(),
59 "\nenum ".to_string(),
60 "\nmod ".to_string(),
61 "\ntrait ".to_string(),
62 "\n\n".to_string(),
63 "\n".to_string(),
64 " ".to_string(),
65 String::new(),
66 ],
67 Language::Go => vec![
68 "\nfunc ".to_string(),
69 "\ntype ".to_string(),
70 "\n\n".to_string(),
71 "\n".to_string(),
72 " ".to_string(),
73 String::new(),
74 ],
75 Language::Java => vec![
76 "\nclass ".to_string(),
77 "\npublic ".to_string(),
78 "\nprotected ".to_string(),
79 "\nprivate ".to_string(),
80 "\nstatic ".to_string(),
81 "\n\n".to_string(),
82 "\n".to_string(),
83 " ".to_string(),
84 String::new(),
85 ],
86 Language::Cpp => vec![
87 "\nclass ".to_string(),
88 "\nvoid ".to_string(),
89 "\nint ".to_string(),
90 "\nfloat ".to_string(),
91 "\n\n".to_string(),
92 "\n".to_string(),
93 " ".to_string(),
94 String::new(),
95 ],
96 Language::Ruby => vec![
97 "\ndef ".to_string(),
98 "\nclass ".to_string(),
99 "\nmodule ".to_string(),
100 "\n\n".to_string(),
101 "\n".to_string(),
102 " ".to_string(),
103 String::new(),
104 ],
105 Language::Markdown => vec![
106 "\n## ".to_string(),
107 "\n### ".to_string(),
108 "\n#### ".to_string(),
109 "\n\n".to_string(),
110 "\n".to_string(),
111 " ".to_string(),
112 String::new(),
113 ],
114 Language::Latex => vec![
115 "\n\\chapter{".to_string(),
116 "\n\\section{".to_string(),
117 "\n\\subsection{".to_string(),
118 "\n\n".to_string(),
119 "\n".to_string(),
120 " ".to_string(),
121 String::new(),
122 ],
123 Language::Html => vec![
124 "<div".to_string(),
125 "<p".to_string(),
126 "<br".to_string(),
127 "<li".to_string(),
128 "<h1".to_string(),
129 "<h2".to_string(),
130 "<h3".to_string(),
131 "<table".to_string(),
132 "<tr".to_string(),
133 "\n\n".to_string(),
134 "\n".to_string(),
135 " ".to_string(),
136 String::new(),
137 ],
138 }
139 }
140}