1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Serialize, Deserialize, Copy, Clone, PartialEq, Eq, Default)]
9#[serde(rename_all = "snake_case")]
10pub enum Language {
11 #[serde(rename = "abap")]
12 Abap,
13 #[serde(rename = "agda")]
14 Agda,
15 #[serde(rename = "arduino")]
16 Arduino,
17 #[serde(rename = "ascii_art")]
18 AsciiArt,
19 #[serde(rename = "assembly")]
20 Assembly,
21 #[serde(rename = "bash")]
22 Bash,
23 #[serde(rename = "basic")]
24 Basic,
25 #[serde(rename = "bnf")]
26 Bnf,
27 #[serde(rename = "c")]
28 C,
29 #[serde(rename = "c#")]
30 CSharp,
31 #[serde(rename = "c++")]
32 CPlusPlus,
33 #[serde(rename = "clojure")]
34 Clojure,
35 #[serde(rename = "coffeescript")]
36 Coffeescript,
37 #[serde(rename = "coq")]
38 Coq,
39 #[serde(rename = "css")]
40 Css,
41 #[serde(rename = "dart")]
42 Dart,
43 #[serde(rename = "dhall")]
44 Dhall,
45 #[serde(rename = "diff")]
46 Diff,
47 #[serde(rename = "docker")]
48 Docker,
49 #[serde(rename = "ebnf")]
50 Ebnf,
51 #[serde(rename = "elixir")]
52 Elixir,
53 #[serde(rename = "elm")]
54 Elm,
55 #[serde(rename = "erlang")]
56 Erlang,
57 #[serde(rename = "f#")]
58 FSharp,
59 #[serde(rename = "flow")]
60 Flow,
61 #[serde(rename = "fortran")]
62 Fortran,
63 #[serde(rename = "gherkin")]
64 Gherkin,
65 #[serde(rename = "glsl")]
66 Glsl,
67 #[serde(rename = "go")]
68 Go,
69 #[serde(rename = "graphql")]
70 Graphql,
71 #[serde(rename = "groovy")]
72 Groovy,
73 #[serde(rename = "haskell")]
74 Haskell,
75 #[serde(rename = "hcl")]
76 Hcl,
77 #[serde(rename = "html")]
78 Html,
79 #[serde(rename = "idris")]
80 Idris,
81 #[serde(rename = "java")]
82 Java,
83 #[serde(rename = "javascript")]
84 Javascript,
85 #[serde(rename = "json")]
86 Json,
87 #[serde(rename = "julia")]
88 Julia,
89 #[serde(rename = "kotlin")]
90 Kotlin,
91 #[serde(rename = "latex")]
92 Latex,
93 #[serde(rename = "less")]
94 Less,
95 #[serde(rename = "lisp")]
96 Lisp,
97 #[serde(rename = "livescript")]
98 Livescript,
99 #[serde(rename = "llvm ir")]
100 LlvmIr,
101 #[serde(rename = "lua")]
102 Lua,
103 #[serde(rename = "makefile")]
104 Makefile,
105 #[serde(rename = "markdown")]
106 Markdown,
107 #[serde(rename = "markup")]
108 Markup,
109 #[serde(rename = "matlab")]
110 Matlab,
111 #[serde(rename = "mathematica")]
112 Mathematica,
113 #[serde(rename = "mermaid")]
114 Mermaid,
115 #[serde(rename = "nix")]
116 Nix,
117 #[serde(rename = "notion formula")]
118 NotionFormula,
119 #[serde(rename = "objective-c")]
120 ObjectiveC,
121 #[serde(rename = "ocaml")]
122 Ocaml,
123 #[serde(rename = "pascal")]
124 Pascal,
125 #[serde(rename = "perl")]
126 Perl,
127 #[serde(rename = "php")]
128 Php,
129 #[serde(rename = "plain text")]
130 #[default]
131 PlainText,
132 #[serde(rename = "powershell")]
133 Powershell,
134 #[serde(rename = "prolog")]
135 Prolog,
136 #[serde(rename = "protobuf")]
137 Protobuf,
138 #[serde(rename = "purescript")]
139 Purescript,
140 #[serde(rename = "python")]
141 Python,
142 #[serde(rename = "r")]
143 R,
144 #[serde(rename = "racket")]
145 Racket,
146 #[serde(rename = "reason")]
147 Reason,
148 #[serde(rename = "ruby")]
149 Ruby,
150 #[serde(rename = "rust")]
151 Rust,
152 #[serde(rename = "sass")]
153 Sass,
154 #[serde(rename = "scala")]
155 Scala,
156 #[serde(rename = "scheme")]
157 Scheme,
158 #[serde(rename = "scss")]
159 Scss,
160 #[serde(rename = "shell")]
161 Shell,
162 #[serde(rename = "smalltalk")]
163 Smalltalk,
164 #[serde(rename = "solidity")]
165 Solidity,
166 #[serde(rename = "sql")]
167 Sql,
168 #[serde(rename = "swift")]
169 Swift,
170 #[serde(rename = "toml")]
171 Toml,
172 #[serde(rename = "typescript")]
173 Typescript,
174 #[serde(rename = "vb.net")]
175 VbNet,
176 #[serde(rename = "verilog")]
177 Verilog,
178 #[serde(rename = "vhdl")]
179 Vhdl,
180 #[serde(rename = "visual basic")]
181 VisualBasic,
182 #[serde(rename = "webassembly")]
183 Webassembly,
184 #[serde(rename = "xml")]
185 Xml,
186 #[serde(rename = "yaml")]
187 Yaml,
188 #[serde(rename = "java/c/c++/c#")]
189 JavaCCPlusPlusCSharp,
190}
191
192impl std::str::FromStr for Language {
193 type Err = serde_plain::Error;
194 fn from_str(s: &str) -> Result<Self, Self::Err> {
195 serde_plain::from_str(s)
196 }
197}
198
199impl std::fmt::Display for Language {
200 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
201 serde_plain::to_string(self)
202 .map_err(|_| std::fmt::Error)?
203 .fmt(f)
204 }
205}